fix: 修复 JWT Claims 类型转换问题

AuthMiddleware 中的 userID 从 JWT claims 解析时,JWT 库默认将数字字段解析为 float64 类型,
但 handler 使用 GetUint 获取,导致类型不匹配。

修复内容:
- 增加 strconv 导入
- 增强类型转换逻辑,支持 float64、int、int64、uint 和 string 类型统一转换为 uint

这将确保用户登录后能正常访问需要认证的接口。
This commit is contained in:
2026-05-25 16:57:53 +08:00
parent 6a87cbe23f
commit 5d8d186d74
+18 -1
View File
@@ -2,6 +2,7 @@ package mildware
import (
"net/http"
"strconv"
"strings"
"gen2d/internal/logger"
@@ -45,7 +46,23 @@ func AuthMiddleware(jwtSecret string) gin.HandlerFunc {
}
if sub, ok := claims["sub"]; ok {
c.Set("userID", sub)
var userID uint
switch v := sub.(type) {
case float64:
userID = uint(v)
case int:
userID = uint(v)
case int64:
userID = uint(v)
case uint:
userID = v
case string:
num, err := strconv.ParseUint(v, 10, 64)
if err == nil {
userID = uint(num)
}
}
c.Set("userID", userID)
}
c.Next()