Browse Source

fix:edit token/check

jimmyyem 7 months ago
parent
commit
25898a3343
1 changed files with 9 additions and 3 deletions
  1. 9 3
      internal/logic/token/check_token_logic.go

+ 9 - 3
internal/logic/token/check_token_logic.go

@@ -45,15 +45,21 @@ func (l *CheckTokenLogic) CheckToken(req *types.CheckTokenReq) (resp *types.Chec
 	if tokenItem == nil { // 判断Token是否存在
 		valid = false
 	} else if tokenItem.ExpireAt.Unix() > timestamp { // 判断Token是否过期
-		valid = true
-		if tokenItem.MAC == "" {
+		if tokenItem.MAC == "" { // 判断MAC是否存在,如果不存咋则说明是第一次激活该Token
+			valid = true
 			err = l.svcCtx.DB.Token.UpdateOneID(tokenItem.ID).SetNotNilMAC(req.Mac).Exec(l.ctx)
 			if err != nil {
 				return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
 			}
+		} else if tokenItem.MAC != *req.Mac { // 如果Mac地址不匹配说明该请求不合法
+			valid = false
+		} else { // 这是正常验证,返回OK
+			valid = true
 		}
 
-		sign = generateSign(*req.Token, *req.Mac, strconv.Itoa(int(timestamp)))
+		if valid {
+			sign = generateSign(*req.Token, *req.Mac, strconv.Itoa(int(timestamp)))
+		}
 	}
 
 	return &types.CheckTokenResp{