|
@@ -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) {
|
|
@@ -558,36 +532,36 @@ func (c *BaseAuthController) Prepare() {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- // 如果当前登录态是不可信设备的,那么需要做过期校验
|
|
|
- if session.IsRemember != 1 {
|
|
|
- loginKey := fmt.Sprint(utils.CACHE_ACCESS_TOKEN_LOGIN, session.Id)
|
|
|
- loginInfo, _ := utils.Rc.RedisString(loginKey)
|
|
|
- if loginInfo == `` {
|
|
|
- c.JSON(models.BaseResponse{Ret: 408, Msg: "超时未操作,系统自动退出!", ErrMsg: "超时未操作,系统自动退出!"}, false, false)
|
|
|
- c.StopRun()
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- //if loginInfo != "1" {
|
|
|
- // lastLoginTime := admin.LastLoginTime
|
|
|
- //
|
|
|
- // lastLoginTimeObj, err := time.Parse(utils.FormatDateWallWithLoc, lastLoginTime)
|
|
|
- // fmt.Println(lastLoginTimeObj, err)
|
|
|
- //
|
|
|
- // msg := `该账号于` + lastLoginTimeObj.Format(utils.FormatDateTime) + "在其他网络登录。此客户端已退出登录。"
|
|
|
- // c.JSON(models.BaseResponse{Ret: 408, Msg: msg, ErrMsg: msg}, false, false)
|
|
|
- // c.StopRun()
|
|
|
- // return
|
|
|
- //}
|
|
|
-
|
|
|
- // 如果是ETA体验版-更新活跃时长/更新登录时长的接口请求, 则不更新Token时长
|
|
|
- if uri != `/adminapi/eta_trial/user/login_duration` && uri != `/adminapi/eta_trial/user/active` {
|
|
|
- utils.Rc.Put(loginKey, "1", utils.LoginCacheTime*time.Minute)
|
|
|
- // 不信任名单也同步更新
|
|
|
- noTrustLoginKey := fmt.Sprint(utils.CACHE_ACCESS_TOKEN_LOGIN_NO_TRUST, admin.AdminId)
|
|
|
- utils.Rc.Put(noTrustLoginKey, session.Id, utils.LoginCacheTime*time.Minute)
|
|
|
- }
|
|
|
- }
|
|
|
+ //// 如果当前登录态是不可信设备的,那么需要做过期校验
|
|
|
+ //if session.IsRemember != 1 {
|
|
|
+ // loginKey := fmt.Sprint(utils.CACHE_ACCESS_TOKEN_LOGIN, session.Id)
|
|
|
+ // loginInfo, _ := utils.Rc.RedisString(loginKey)
|
|
|
+ // if loginInfo == `` {
|
|
|
+ // c.JSON(models.BaseResponse{Ret: 408, Msg: "超时未操作,系统自动退出!", ErrMsg: "超时未操作,系统自动退出!"}, false, false)
|
|
|
+ // c.StopRun()
|
|
|
+ // return
|
|
|
+ // }
|
|
|
+ //
|
|
|
+ // //if loginInfo != "1" {
|
|
|
+ // // lastLoginTime := admin.LastLoginTime
|
|
|
+ // //
|
|
|
+ // // lastLoginTimeObj, err := time.Parse(utils.FormatDateWallWithLoc, lastLoginTime)
|
|
|
+ // // fmt.Println(lastLoginTimeObj, err)
|
|
|
+ // //
|
|
|
+ // // msg := `该账号于` + lastLoginTimeObj.Format(utils.FormatDateTime) + "在其他网络登录。此客户端已退出登录。"
|
|
|
+ // // c.JSON(models.BaseResponse{Ret: 408, Msg: msg, ErrMsg: msg}, false, false)
|
|
|
+ // // c.StopRun()
|
|
|
+ // // return
|
|
|
+ // //}
|
|
|
+ //
|
|
|
+ // // 如果是ETA体验版-更新活跃时长/更新登录时长的接口请求, 则不更新Token时长
|
|
|
+ // if uri != `/adminapi/eta_trial/user/login_duration` && uri != `/adminapi/eta_trial/user/active` {
|
|
|
+ // utils.Rc.Put(loginKey, "1", utils.LoginCacheTime*time.Minute)
|
|
|
+ // // 不信任名单也同步更新
|
|
|
+ // noTrustLoginKey := fmt.Sprint(utils.CACHE_ACCESS_TOKEN_LOGIN_NO_TRUST, admin.AdminId)
|
|
|
+ // utils.Rc.Put(noTrustLoginKey, session.Id, utils.LoginCacheTime*time.Minute)
|
|
|
+ // }
|
|
|
+ //}
|
|
|
|
|
|
admin.RoleTypeCode = GetSysUserRoleTypeCode(admin.RoleTypeCode)
|
|
|
c.SysUser = admin
|
|
@@ -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"}
|