'commit'
continuous-integration/drone/push Build is passing Details

master
wangshuai 4 years ago
parent 8186976d90
commit 89b5d90841

@ -0,0 +1,31 @@
package SSOAccountController
import (
"dsSupport/MyModel/SSOAccount/SSOAccountOpenAPI"
"github.com/gin-gonic/gin"
)
func Routers(r *gin.RouterGroup) {
rr := r.Group("/ssoAccount")
{
rr.POST("/login", SSOAccountOpenAPI.Login)
rr.OPTIONS("/login", HandleOptions)
rr.POST("/logout", SSOAccountOpenAPI.Logout)
rr.GET("/logout", SSOAccountOpenAPI.Logout)
rr.OPTIONS("/logout", HandleOptions)
rr.POST("/userInfo", SSOAccountOpenAPI.UserInfo)
rr.GET("/userInfo", SSOAccountOpenAPI.UserInfo)
rr.OPTIONS("/userInfo", HandleOptions)
}
return
}
func HandleOptions(c *gin.Context) {
c.Header("Access-Control-Allow-Origin", "*")
c.Header("Access-Control-Allow-Methods", "POST, GET, OPTIONS")
c.Header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization")
c.String(200, "ok")
}

@ -0,0 +1,191 @@
package SSOAccountOpenAPI
import (
"dsSupport/MyModel/MySwagger"
"dsSupport/MyModel/SSOAccount/SSOAccountService"
"fmt"
"github.com/gin-gonic/gin"
goCas "github.com/go-cas/cas"
//"log"
"net/http"
)
var casURL = "http://10.10.14.199:8080/dsssoserver/" //单点登录地址
//type casMiddleware struct {
// casClient *goCas.Client
// handler http.Handler
//}
//type Options = goCas.Options
func Login(c *gin.Context) {
res, msg := SSOAccountService.Login()
if res {
c.JSON(http.StatusOK, MySwagger.SSOResult{
Success: true,
Message: msg,
})
} else {
c.JSON(http.StatusOK, MySwagger.SSOResult{
Success: false,
Message: msg,
})
}
}
func Logout(c *gin.Context) {
var w http.ResponseWriter = c.Writer
var r *http.Request = c.Request
goCas.RedirectToLogout(w, r)
fmt.Println("LOGOUT OK!")
c.JSON(http.StatusOK, MySwagger.SSOResult{
Success: true,
Message: "LOGOUT OK!!",
})
}
// 后台登陆 godoc
// @Summary 后台登陆
// @Tags account
// @ID loginAccount
// @Accept json
// @Produce json
// @Param input body MySwagger.AccountSwag true "账号密码"
// @Success 200 {object} MySwagger.Result
// @Failure 400 {object} MySwagger.Result
// @Router /support/ssoAccount/userInfo [post]
func UserInfo(c *gin.Context) {
//var w http.ResponseWriter = c.Writer
ip := GetRequestIP(c)
fmt.Println("ip:", ip)
var r *http.Request = c.Request
//goCas.RedirectToLogin(w, r)
IsAuthenticated := goCas.IsAuthenticated(r)
fmt.Println("IsAuthenticated", IsAuthenticated)
fmt.Println("goCas.Username(c.Request)", goCas.Username(c.Request))
CASAttributes, ok := c.Get("CASAttributes") //取值 实现了跨中间件取值
if !ok{
CASAttributes = "default CASAttributes"
}
fmt.Println("CASAttributes", CASAttributes)
res, msg := SSOAccountService.UserInfo()
if res {
c.JSON(http.StatusOK, MySwagger.SSOResult{
Success: true,
Message: msg,
Data: CASAttributes,
})
} else {
c.JSON(http.StatusOK, MySwagger.SSOResult{
Success: false,
Message: msg,
})
}
}
// 后台登陆 godoc
// @Summary 后台登陆1
// @Tags account
// @ID loginAccount
// @Accept json
// @Produce json
// @Param input body MySwagger.AccountSwag true "账号密码"
// @Success 200 {object} MySwagger.Result
// @Failure 400 {object} MySwagger.Result
// @Router /support/ssoAccount/userInfo1 [post]
func UserInfo1(c *gin.Context) {
//var casURL = "http://10.10.14.199:8080/dsssoserver/" //单点登录地址
//redirectURL, err := url.Parse(casURL)
//if err != nil {
// log.Fatal(err)
// return
//}
//
//casOptions := goCas.Options{
// URL: redirectURL,
// SendService: true,
//}
//
//MiddlewareFunc(&casOptions)
CASUsername, ok := c.Get("CASUsername") //取值 实现了跨中间件取值
if !ok{
CASUsername = "default user"
}
fmt.Println("CASUsername", CASUsername)
res, msg := SSOAccountService.UserInfo()
if res {
c.JSON(http.StatusOK, MySwagger.SSOResult{
Success: true,
Message: msg,
Data: CASUsername,
})
} else {
c.JSON(http.StatusOK, MySwagger.SSOResult{
Success: false,
Message: msg,
})
}
}
//func (casMiddleware casMiddleware) authed(c *gin.Context) {
// c.Set("CASUsername", goCas.Username(c.Request))
// fmt.Println("goCas.Username(c.Request):", goCas.Username(c.Request))
// c.Set("CASAttributes", goCas.Attributes(c.Request))
// c.Next()
// return
//}
//
//func (casMiddleware casMiddleware) middlewareFunc(c *gin.Context) {
// casMiddleware.handler.ServeHTTP(c.Writer, c.Request)
// if goCas.IsAuthenticated(c.Request) {
// casMiddleware.authed(c)
// return
// }
// c.Abort()
//}
//
//
//func MiddlewareFunc(options *Options) gin.HandlerFunc {
// casClient := goCas.NewClient((*goCas.Options)(options))
// rawHandler := func(res http.ResponseWriter, req *http.Request) {
// if goCas.IsAuthenticated(req) {
// return
// }
// if goCas.IsNewLogin(req) {
// return
// }
// casClient.RedirectToLogin(res, req)
// }
// return casMiddleware{
// casClient: casClient,
// handler: casClient.HandleFunc(rawHandler),
// }.middlewareFunc
//}
//获取ip
func GetRequestIP(c *gin.Context)string{
reqIP := c.ClientIP()
if reqIP == "::1" {
reqIP = "127.0.0.1"
}
return reqIP
}

@ -0,0 +1,41 @@
package SSOAccountService
import (
"github.com/shenshouer/cas"
)
var casURL = "http://10.10.14.199:8080/dsssoserver/" //单点登录地址
type templateBinding struct {
Username string
Attributes cas.UserAttributes
}
func Login() (bool, string) {
return true, ""
}
func UserInfo() (bool, string) {
//u, _ := url.Parse(casURL)
//c := cas.NewClient(&cas.Options{
// URL: u,
//})
//
//h := c.HandleFunc(func(w http.ResponseWriter, r *http.Request) {
// if !cas.IsAuthenticated(r) {
// cas.RedirectToLogout(w, r)
// }
//
// fmt.Fprintf(w, "Hello %s\n", cas.Username(r))
//})
//
//err := http.ListenAndServe(":8080", h)
//if err != nil {
// log.Fatal("ListenAndServe: ", err)
//}
return true, ""
}

@ -48,7 +48,6 @@ func main() {
// 使用跨域中间件
r.Use(Utils.Cors())
//var casURL = "http://10.10.14.199/dsssoserver/" //单点登录地址
//var casURL = ConfigUtil.SSOCasURL //单点登录地址
//redirectURL, err := url.Parse(casURL)
//if err != nil {

Loading…
Cancel
Save