feat: 修改jwt逻辑,登出黑名单处理

This commit is contained in:
Blizzard
2025-09-15 21:00:39 +08:00
parent 9be75d53fe
commit 6beb915adf
9 changed files with 74 additions and 64 deletions
+17 -8
View File
@@ -2,34 +2,43 @@ package middleware
import (
"errors"
"github.com/gin-gonic/gin"
"sundynix-go/model/commom/response"
"sundynix-go/utils"
"sundynix-go/service"
"sundynix-go/utils/jwt"
"github.com/gin-gonic/gin"
)
var jwtService = service.ServiceGroupApp.SystemServiceGroup.JwtService
// AuthMiddleware 验证token有效性
func AuthMiddleware() gin.HandlerFunc {
return func(c *gin.Context) {
token := utils.GetToken(c)
token := jwt.GetToken(c)
if token == "" {
response.NoAuth("未登录或非法访问", c)
c.Abort()
return
}
//todo 黑名单处理
userId := jwt.GetUserId(c)
if jwtService.IsInBlacklist(userId, token) {
response.NoAuth("未登录或令牌失效", c)
c.Abort()
return
}
j := utils.NewJWT()
j := jwt.NewJWT()
// 解析token信息
claims, err := j.ParseToken(token)
if err != nil {
if errors.Is(err, utils.TokenExpired) {
if errors.Is(err, jwt.TokenExpired) {
response.NoAuth("登录过期", c)
utils.ClearToken(c)
jwt.ClearToken(c)
c.Abort()
return
}
response.NoAuth(err.Error(), c)
utils.ClearToken(c)
jwt.ClearToken(c)
c.Abort()
return
}