package middleware import ( "encoding/base64" "fmt" "git.qianqiusoft.com/qianqiusoft/light-apiengine/config" sysmodels "git.qianqiusoft.com/qianqiusoft/light-apiengine/models" "git.qianqiusoft.com/qianqiusoft/light-apiengine/utils" "git.qianqiusoft.com/qianqiusoft/light-apiengine/wfclient" "github.com/gin-gonic/gin" "strings" ) func LoginWare() gin.HandlerFunc { return func(c *gin.Context) { //验证登陆 //fmt.Println("header-Authorization:" + c.GetHeader("Authorization")) s := strings.SplitN(c.GetHeader("Authorization"), " ", 2) if len(s) != 2 { fmt.Println("sso header not found.") c.Redirect(302, "/login") return } b, err := base64.StdEncoding.DecodeString(s[1]) fmt.Println("base64 decode:" + string(b)) if err != nil { fmt.Println("sso header decode error." + err.Error()) c.Redirect(302, "/login") return } pair := strings.SplitN(string(b), ":", 3) if len(pair) != 3 { fmt.Println("sso header len(pair) !=3") c.Redirect(302, "/login") return } tk := utils.GetGlobalTokenStore().Get(pair[0] + pair[2]) if tk == nil { c.AbortWithStatusJSON(401, sysmodels.SysReturn{401, "token Invalid", ""}) c.Redirect(302, "/login") return } wfendpoint := config.AppConfig.GetKey("wfendpoint") wfclient.Instance().Init(wfendpoint, tk.UserId, tk.LoginID, tk.AccessToken, tk.Domain) c.Set("token", tk) c.Set("user_id", tk.UserId) c.Set("domain", tk.Domain) c.Next() } }