Browse Source

优化免密登录

hsun 1 year ago
parent
commit
33a28e3e18
3 changed files with 32 additions and 2 deletions
  1. 20 2
      controller/auth.go
  2. 6 0
      models/eta/sys_session.go
  3. 6 0
      models/rddp/sys_session.go

+ 20 - 2
controller/auth.go

@@ -99,8 +99,17 @@ func (a *AuthController) GetEtaToken(c *gin.Context) {
 		return
 	}
 
+	var token string
 	account := utils.MD5(adminName)
-	token := utils.GenToken(account)
+	// 获取用户未过期的session, 避免过于频繁生成token
+	expired := time.Now().AddDate(0, 0, 1).Format(utils.FormatDateTime)
+	session, _ := eta.GetUserUnexpiredSysSession(adminName, expired)
+	if session != nil && session.AccessToken != "" {
+		token = session.AccessToken
+	} else {
+		token = utils.GenToken(account)
+	}
+
 	sysSession := new(eta.SysSession)
 	sysSession.UserName = adminName
 	sysSession.SysUserId = sysUser.AdminId
@@ -211,8 +220,17 @@ func (a *AuthController) GetCrmToken(c *gin.Context) {
 		return
 	}
 
+	var token string
 	account := utils.MD5(adminName)
-	token := utils.GenToken(account)
+	// 获取用户未过期的session, 避免过于频繁生成token
+	expired := time.Now().AddDate(0, 0, 1).Format(utils.FormatDateTime)
+	session, _ := rddp.GetUserUnexpiredSysSession(adminName, expired)
+	if session != nil && session.AccessToken != "" {
+		token = session.AccessToken
+	} else {
+		token = utils.GenToken(account)
+	}
+
 	sysSession := new(rddp.SysSession)
 	sysSession.UserName = adminName
 	sysSession.SysUserId = sysUser.AdminId

+ 6 - 0
models/eta/sys_session.go

@@ -31,3 +31,9 @@ func GetSysSessionByToken(token string) (item *SysSession, err error) {
 	err = global.MYSQL["hz_eta"].Where("access_token = ? AND expired_time > NOW()", token).Order("expired_time DESC").First(&item).Error
 	return
 }
+
+// GetUserUnexpiredSysSession 获取用户未过期的Token
+func GetUserUnexpiredSysSession(userName, expiredTime string) (item *SysSession, err error) {
+	err = global.MYSQL["hz_eta"].Where("user_name = ? AND expired_time > ?", userName, expiredTime).Order("expired_time DESC").First(&item).Error
+	return
+}

+ 6 - 0
models/rddp/sys_session.go

@@ -31,3 +31,9 @@ func GetSysSessionByToken(token string) (item *SysSession, err error) {
 	err = global.MYSQL["rddp"].Where("access_token = ? AND expired_time > NOW()", token).Order("expired_time DESC").First(&item).Error
 	return
 }
+
+// GetUserUnexpiredSysSession 获取用户未过期的Token
+func GetUserUnexpiredSysSession(userName, expiredTime string) (item *SysSession, err error) {
+	err = global.MYSQL["rddp"].Where("user_name = ? AND expired_time > ?", userName, expiredTime).Order("expired_time DESC").First(&item).Error
+	return
+}