|
@@ -647,6 +647,22 @@ func checkToken(c *BaseAuthController) (isOk bool, token string, resp models.Bas
|
|
|
// 是否校验成功
|
|
|
isOk = true
|
|
|
uri := c.Ctx.Input.URI()
|
|
|
+
|
|
|
+ // 单点登录逻辑
|
|
|
+ aiUser := c.Ctx.GetCookie("ai_user")
|
|
|
+ if aiUser == `` {
|
|
|
+ aiUser = c.Ctx.GetCookie("ai_token")
|
|
|
+ }
|
|
|
+ //fmt.Println("ai_user:", aiUser)
|
|
|
+
|
|
|
+ // 如果cookie里面没有这个,那么就过期重新登录
|
|
|
+ if aiUser == `` {
|
|
|
+ resp = models.BaseResponse{Ret: 408, Msg: "请重新授权!", ErrMsg: "ai_user or ai_token empty"}
|
|
|
+ isOk = false
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取eta的token
|
|
|
authorization := c.Ctx.Input.Header("authorization")
|
|
|
if authorization == "" {
|
|
|
authorization = c.Ctx.Input.Header("Authorization")
|
|
@@ -681,55 +697,47 @@ func checkToken(c *BaseAuthController) (isOk bool, token string, resp models.Bas
|
|
|
token = tokenArr[1]
|
|
|
}
|
|
|
|
|
|
- // 单点登录逻辑
|
|
|
- aiUser := c.Ctx.GetCookie("ai_user")
|
|
|
- if aiUser == `` {
|
|
|
- aiUser = c.Ctx.GetCookie("ai_token")
|
|
|
- }
|
|
|
- fmt.Println("ai_user:", aiUser)
|
|
|
//fmt.Println("token:", token)
|
|
|
- if aiUser != "" {
|
|
|
- // Token空了, 以Cookie为准重新登录
|
|
|
- if token == `` {
|
|
|
- newLogin, e := services.UserLoginChange(aiUser)
|
|
|
- if e != nil {
|
|
|
- resp = models.BaseResponse{Ret: 408, Msg: "重登录失败,请稍后重试!", ErrMsg: fmt.Sprint(e)}
|
|
|
- } else {
|
|
|
- resp = models.BaseResponse{Ret: models.BaseRespReLoginErr, Msg: "用户切换,请刷新页面", ErrMsg: "user exchanged", Data: newLogin}
|
|
|
- }
|
|
|
- isOk = false
|
|
|
- return
|
|
|
+ // Token空了, 以Cookie为准重新登录
|
|
|
+ if token == `` {
|
|
|
+ newLogin, e := services.UserLoginChange(aiUser)
|
|
|
+ if e != nil {
|
|
|
+ resp = models.BaseResponse{Ret: 408, Msg: "重登录失败,请稍后重试!", ErrMsg: fmt.Sprint(e)}
|
|
|
+ } else {
|
|
|
+ resp = models.BaseResponse{Ret: models.BaseRespReLoginErr, Msg: "用户切换,请刷新页面", ErrMsg: "user exchanged", Data: newLogin}
|
|
|
}
|
|
|
+ isOk = false
|
|
|
+ return
|
|
|
+ }
|
|
|
|
|
|
- // todo 将aiUser与session进行关联
|
|
|
- // token不为空, 那么去校验一下token是否过期, 以及和cookieVal是否匹配
|
|
|
- // 找不到session, 也直接切CookieValue中的用户登录
|
|
|
- session, err := system.GetSysSessionByToken(token)
|
|
|
- if err != nil {
|
|
|
- newLogin, e := services.UserLoginChange(aiUser)
|
|
|
- if e != nil {
|
|
|
- resp = models.BaseResponse{Ret: 408, Msg: "重登录失败,请稍后重试!", ErrMsg: fmt.Sprint(e)}
|
|
|
- } else {
|
|
|
- resp = models.BaseResponse{Ret: models.BaseRespReLoginErr, Msg: "用户切换,请刷新页面", ErrMsg: "user exchanged", Data: newLogin}
|
|
|
- }
|
|
|
- isOk = false
|
|
|
- return
|
|
|
+ // todo 将aiUser与session进行关联
|
|
|
+ // token不为空, 那么去校验一下token是否过期, 以及和cookieVal是否匹配
|
|
|
+ // 找不到session, 也直接切CookieValue中的用户登录
|
|
|
+ session, err := system.GetSysSessionByToken(token)
|
|
|
+ if err != nil {
|
|
|
+ newLogin, e := services.UserLoginChange(aiUser)
|
|
|
+ if e != nil {
|
|
|
+ resp = models.BaseResponse{Ret: 408, Msg: "重登录失败,请稍后重试!", ErrMsg: fmt.Sprint(e)}
|
|
|
+ } else {
|
|
|
+ resp = models.BaseResponse{Ret: models.BaseRespReLoginErr, Msg: "用户切换,请刷新页面", ErrMsg: "user exchanged", Data: newLogin}
|
|
|
}
|
|
|
+ isOk = false
|
|
|
+ return
|
|
|
+ }
|
|
|
|
|
|
- // CookieVal不匹配、token验证失败、session以及redis中的token过期,那么以cookieVal的用户去登录并返回4014
|
|
|
- account := utils.MD5(session.UserName)
|
|
|
- loginKey := fmt.Sprint(utils.CACHE_ACCESS_TOKEN_LOGIN, session.Id)
|
|
|
- loginCache, _ := utils.Rc.RedisString(loginKey)
|
|
|
- if session.UserName != aiUser || !utils.CheckToken(account, token) || time.Now().After(session.ExpiredTime) || (session.IsRemember != 1 && loginCache == ``) {
|
|
|
- newLogin, e := services.UserLoginChange(aiUser)
|
|
|
- if e != nil {
|
|
|
- resp = models.BaseResponse{Ret: 408, Msg: "重登录失败,请稍后重试!", ErrMsg: fmt.Sprint(e)}
|
|
|
- } else {
|
|
|
- resp = models.BaseResponse{Ret: models.BaseRespReLoginErr, Msg: "用户切换,请刷新页面", ErrMsg: "user exchanged", Data: newLogin}
|
|
|
- }
|
|
|
- isOk = false
|
|
|
- return
|
|
|
+ // CookieVal不匹配、token验证失败、session以及redis中的token过期,那么以cookieVal的用户去登录并返回4014
|
|
|
+ account := utils.MD5(session.UserName)
|
|
|
+ loginKey := fmt.Sprint(utils.CACHE_ACCESS_TOKEN_LOGIN, session.Id)
|
|
|
+ loginCache, _ := utils.Rc.RedisString(loginKey)
|
|
|
+ if session.UserName != aiUser || !utils.CheckToken(account, token) || time.Now().After(session.ExpiredTime) || (session.IsRemember != 1 && loginCache == ``) {
|
|
|
+ newLogin, e := services.UserLoginChange(aiUser)
|
|
|
+ if e != nil {
|
|
|
+ resp = models.BaseResponse{Ret: 408, Msg: "重登录失败,请稍后重试!", ErrMsg: fmt.Sprint(e)}
|
|
|
+ } else {
|
|
|
+ resp = models.BaseResponse{Ret: models.BaseRespReLoginErr, Msg: "用户切换,请刷新页面", ErrMsg: "user exchanged", Data: newLogin}
|
|
|
}
|
|
|
+ isOk = false
|
|
|
+ return
|
|
|
}
|
|
|
|
|
|
// 正常逻辑
|