Bladeren bron

支持新接入服务Token

zhou.xiaoning 3 jaren geleden
bovenliggende
commit
5bc2353f98
1 gewijzigde bestanden met toevoegingen van 41 en 11 verwijderingen
  1. 41 11
      token/token.go

+ 41 - 11
token/token.go

@@ -39,6 +39,24 @@ func CheckToken(loginid string, token string, group string) error {
 	return nil
 }
 
+// CheckNewToken 新接入服务Token校验
+func CheckNewToken(loginid string, token string, group string) error {
+	key := fmt.Sprintf("m2a:login:%s:%s", loginid, group)
+
+	field := "Token"
+
+	realToken, err := rediscli.GetRedisClient().HGet(key, field).Result()
+	if err != nil {
+		return err
+	}
+
+	if realToken != token {
+		return errors.New("token is invalid")
+	}
+
+	return nil
+}
+
 // Auth Token校验中间件
 func Auth() gin.HandlerFunc {
 	return func(c *gin.Context) {
@@ -63,17 +81,29 @@ func Auth() gin.HandlerFunc {
 			// Token缺失
 			code = e.ERROR_AUTH_CHECK_TOKEN_MISSING
 		} else {
-			// 获取loginid
-			s := strings.Split(token, "_")
-			loginid := s[0]
-			// 支持分组功能
-			group := ""
-			if len(s) == 3 {
-				group = s[2]
-			}
-			if err := CheckToken(loginid, token, group); err != nil {
-				// Token错误
-				code = e.ERROR_AUTH_CHECK_TOKEN_FAIL
+			// 判断是否新接入Token
+			newLoginID := c.GetHeader("LoginID")
+			if newLoginID == "" {
+				// 旧版Token
+				// 获取loginid
+				s := strings.Split(token, "_")
+				loginid := s[0]
+				// 支持分组功能
+				group := ""
+				if len(s) == 3 {
+					group = s[2]
+				}
+				if err := CheckToken(loginid, token, group); err != nil {
+					// Token错误
+					code = e.ERROR_AUTH_CHECK_TOKEN_FAIL
+				}
+			} else {
+				// 新版Token
+				group := c.GetHeader("Group")
+				if err := CheckNewToken(newLoginID, token, group); err != nil {
+					// Token错误
+					code = e.ERROR_AUTH_CHECK_TOKEN_FAIL
+				}
 			}
 		}