|
@@ -39,6 +39,24 @@ func CheckToken(loginid string, token string, group string) error {
|
|
|
return nil
|
|
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校验中间件
|
|
// Auth Token校验中间件
|
|
|
func Auth() gin.HandlerFunc {
|
|
func Auth() gin.HandlerFunc {
|
|
|
return func(c *gin.Context) {
|
|
return func(c *gin.Context) {
|
|
@@ -63,17 +81,29 @@ func Auth() gin.HandlerFunc {
|
|
|
// Token缺失
|
|
// Token缺失
|
|
|
code = e.ERROR_AUTH_CHECK_TOKEN_MISSING
|
|
code = e.ERROR_AUTH_CHECK_TOKEN_MISSING
|
|
|
} else {
|
|
} 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
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|