Browse Source

fix:eta调整crm的时候,由于crm的mysql数据中还存在数据,导致没有重新生成token,但是redis缓存过期,导致前端提示登录失败,所以针对这种情况,重新生成token

Roc 9 months ago
parent
commit
16653008ba
2 changed files with 17 additions and 0 deletions
  1. 16 0
      controller/auth.go
  2. 1 0
      utils/constants.go

+ 16 - 0
controller/auth.go

@@ -219,6 +219,9 @@ func (a *AuthController) GetCrmToken(c *gin.Context) {
 		return
 	}
 
+	// 是否重新生成token
+	var isRegenerate bool
+
 	var token string
 	account := utils.MD5(adminName)
 	// 获取用户未过期的session, 避免过于频繁生成token
@@ -226,7 +229,20 @@ func (a *AuthController) GetCrmToken(c *gin.Context) {
 	session, _ := rddp.GetUserUnexpiredSysSession(adminName, expired)
 	if session != nil && session.AccessToken != "" {
 		token = session.AccessToken
+
+		// 校验缓存中token是否过期,如果过期了,那么需要重新生成
+		loginKey := fmt.Sprint(utils.CACHE_ACCESS_TOKEN_LOGIN, session.Id)
+		loginInfo, _ := global.Rc.RedisString(loginKey)
+		if loginInfo == `` {
+			isRegenerate = true
+		}
 	} else {
+		// 没有获取到用户未过期的session,那么需要重新生成
+		isRegenerate = true
+	}
+
+	// 重新生成token
+	if isRegenerate {
 		token = utils.GenToken(account)
 		sysSession := new(rddp.SysSession)
 		sysSession.UserName = adminName

+ 1 - 0
utils/constants.go

@@ -29,6 +29,7 @@ const (
 const (
 	CACHE_CRM_AUTH_CODE_PREFIX = "hz_crm_eta:crm_auth_code_" // 免密登录Code-CRM
 	CACHE_ETA_AUTH_CODE_PREFIX = "hz_crm_eta:eta_auth_code_" // 免密登录Code-ETA
+	CACHE_ACCESS_TOKEN_LOGIN   = "pc_admin:login:"           //管理后台登录
 )
 
 // 管理员,ficc管理员,ficc销售,权益管理员,权益销售。