|
@@ -494,29 +494,13 @@ func (c *BaseAuthController) Prepare() {
|
|
|
c.Lang = lang
|
|
|
}
|
|
|
|
|
|
- isOk, token, resp := checkToken(c)
|
|
|
+ isOk, session, resp := checkToken(c)
|
|
|
if !isOk {
|
|
|
_ = c.JSON(resp, false, false)
|
|
|
c.StopRun()
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- //accountStr := authorizationArr[1]
|
|
|
- //accountArr := strings.Split(accountStr, "=")
|
|
|
- //account := accountArr[1]
|
|
|
-
|
|
|
- session, err := system.GetSysSessionByToken(token)
|
|
|
- //fmt.Println("session:", session)
|
|
|
- if err != nil {
|
|
|
- if utils.IsErrNoRow(err) {
|
|
|
- c.JSON(models.BaseResponse{Ret: 408, Msg: "信息已变更,请重新登陆!", ErrMsg: "Token 信息已变更:Token: " + token}, false, false)
|
|
|
- c.StopRun()
|
|
|
- return
|
|
|
- }
|
|
|
- c.JSON(models.BaseResponse{Ret: 408, Msg: "网络异常,请稍后重试!", ErrMsg: "获取用户信息异常,Eerr:" + err.Error()}, false, false)
|
|
|
- c.StopRun()
|
|
|
- return
|
|
|
- }
|
|
|
if session == nil {
|
|
|
c.JSON(models.BaseResponse{Ret: 408, Msg: "网络异常,请稍后重试!", ErrMsg: "sesson is empty "}, false, false)
|
|
|
c.StopRun()
|
|
@@ -524,17 +508,7 @@ func (c *BaseAuthController) Prepare() {
|
|
|
}
|
|
|
//校验token是否合法
|
|
|
// JWT校验Token和Account
|
|
|
- account := utils.MD5(session.UserName)
|
|
|
- if !utils.CheckToken(account, token) {
|
|
|
- c.JSON(models.BaseResponse{Ret: 408, Msg: "鉴权失败,请重新登录!", ErrMsg: "登录失效,请重新登陆!,CheckToken Fail"}, false, false)
|
|
|
- c.StopRun()
|
|
|
- return
|
|
|
- }
|
|
|
- if time.Now().After(session.ExpiredTime) {
|
|
|
- c.JSON(models.BaseResponse{Ret: 408, Msg: "请重新登录!", ErrMsg: "获取用户信息异常,Eerr:" + err.Error()}, false, false)
|
|
|
- c.StopRun()
|
|
|
- return
|
|
|
- }
|
|
|
+
|
|
|
admin, err := system.GetSysUserById(session.SysUserId)
|
|
|
if err != nil {
|
|
|
if utils.IsErrNoRow(err) {
|
|
@@ -641,13 +615,15 @@ func (c *BaseAuthController) Prepare() {
|
|
|
// @datetime 2024-10-30 11:29:37
|
|
|
// @param c *BaseAuthController
|
|
|
// @return isOk bool
|
|
|
-// @return token string
|
|
|
+// @return session system.SysSession
|
|
|
// @return resp models.BaseResponse
|
|
|
-func checkToken(c *BaseAuthController) (isOk bool, token string, resp models.BaseResponse) {
|
|
|
+func checkToken(c *BaseAuthController) (isOk bool, session *system.SysSession, resp models.BaseResponse) {
|
|
|
// 是否校验成功
|
|
|
isOk = true
|
|
|
uri := c.Ctx.Input.URI()
|
|
|
|
|
|
+ var token string
|
|
|
+
|
|
|
// 单点登录逻辑
|
|
|
aiUser := c.Ctx.GetCookie("ai_user")
|
|
|
if aiUser == `` {
|
|
@@ -753,9 +729,8 @@ func checkToken(c *BaseAuthController) (isOk bool, token string, resp models.Bas
|
|
|
|
|
|
// 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 == ``) {
|
|
|
+ //if session.UserName != aiUser || !utils.CheckToken(account, token) || time.Now().After(session.ExpiredTime){
|
|
|
+ if session.UserName != aiUser || !utils.CheckToken(account, token) {
|
|
|
newLogin, e := services.UserLoginChange(aiUser)
|
|
|
if e != nil {
|
|
|
resp = models.BaseResponse{Ret: 408, Msg: "重登录失败,请稍后重试!", ErrMsg: fmt.Sprint(e)}
|
|
@@ -766,6 +741,18 @@ func checkToken(c *BaseAuthController) (isOk bool, token string, resp models.Bas
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+ //account := utils.MD5(session.UserName)
|
|
|
+ //if !utils.CheckToken(account, token) {
|
|
|
+ // resp = models.BaseResponse{Ret: 408, Msg: "鉴权失败,请重新登录!", ErrMsg: "登录失效,请重新登陆!,CheckToken Fail"}
|
|
|
+ // isOk = false
|
|
|
+ // return
|
|
|
+ //}
|
|
|
+ //if time.Now().After(session.ExpiredTime) {
|
|
|
+ // resp = models.BaseResponse{Ret: 408, Msg: "请重新登录!", ErrMsg: "获取用户信息异常,Err:" + err.Error()}
|
|
|
+ // isOk = false
|
|
|
+ // return
|
|
|
+ //}
|
|
|
+
|
|
|
// 正常逻辑
|
|
|
if token == "" {
|
|
|
resp = models.BaseResponse{Ret: 408, Msg: "请重新授权!", ErrMsg: "请重新授权:Token is empty or account is empty"}
|