| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- 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()
- }
- }
|