From ed3c15fbb6f668d948c6f57d2c10d36cec75ac39 Mon Sep 17 00:00:00 2001 From: Echo <1711788888@qq.com> Date: Fri, 9 May 2025 11:16:18 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E4=BF=AE=E6=94=B9=E9=89=B4=E6=9D=83?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E4=B8=AD=E9=97=B4=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- middleware/user_jwt.go | 9 +++++---- utils/claims.go | 12 ++++++------ utils/user_jwt/claims.go | 20 ++++++++++---------- 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/middleware/user_jwt.go b/middleware/user_jwt.go index 8d461e7..f2c8c5d 100644 --- a/middleware/user_jwt.go +++ b/middleware/user_jwt.go @@ -4,6 +4,7 @@ import ( "errors" "git.echol.cn/loser/lckt/global" "git.echol.cn/loser/lckt/utils" + "git.echol.cn/loser/lckt/utils/user_jwt" "github.com/golang-jwt/jwt/v5" "strconv" "time" @@ -15,7 +16,7 @@ import ( func UserJWTAuth() gin.HandlerFunc { return func(c *gin.Context) { // 我们这里jwt鉴权取头部信息 x-token 登录时回返回token信息 这里前端需要把token存储到cookie或者本地localStorage中 不过需要跟后端协商过期时间 可以约定刷新令牌或者重新登录 - token := utils.GetToken(c) + token := user_jwt.GetToken(c) if token == "" { response.NoAuth("未登录或非法访问", c) c.Abort() @@ -28,12 +29,12 @@ func UserJWTAuth() gin.HandlerFunc { if err != nil { if errors.Is(err, utils.TokenExpired) { response.NoAuth("授权已过期", c) - utils.ClearToken(c) + user_jwt.ClearToken(c) c.Abort() return } response.NoAuth(err.Error(), c) - utils.ClearToken(c) + user_jwt.ClearToken(c) c.Abort() return } @@ -46,7 +47,7 @@ func UserJWTAuth() gin.HandlerFunc { newClaims, _ := j.ParseToken(newToken) c.Header("new-token", newToken) c.Header("new-expires-at", strconv.FormatInt(newClaims.ExpiresAt.Unix(), 10)) - utils.SetToken(c, newToken, int(dr.Seconds())) + user_jwt.SetToken(c, newToken, int(dr.Seconds())) if global.GVA_CONFIG.System.UseMultipoint { // 记录新的活跃jwt _ = jwtService.SetRedisJWT(newToken, newClaims.Username) diff --git a/utils/claims.go b/utils/claims.go index 2ef0dbd..c08c90c 100644 --- a/utils/claims.go +++ b/utils/claims.go @@ -19,9 +19,9 @@ func ClearToken(c *gin.Context) { } if net.ParseIP(host) != nil { - c.SetCookie("app-token", "", -1, "/", "", false, false) + c.SetCookie("x-token", "", -1, "/", "", false, false) } else { - c.SetCookie("app-token", "", -1, "/", host, false, false) + c.SetCookie("x-token", "", -1, "/", host, false, false) } } @@ -33,17 +33,17 @@ func SetToken(c *gin.Context, token string, maxAge int) { } if net.ParseIP(host) != nil { - c.SetCookie("app-token", token, maxAge, "/", "", false, false) + c.SetCookie("x-token", token, maxAge, "/", "", false, false) } else { - c.SetCookie("app-token", token, maxAge, "/", host, false, false) + c.SetCookie("x-token", token, maxAge, "/", host, false, false) } } func GetToken(c *gin.Context) string { - token := c.Request.Header.Get("app-token") + token := c.Request.Header.Get("x-token") if token == "" { j := NewJWT() - token, _ = c.Cookie("app-token") + token, _ = c.Cookie("x-token") claims, err := j.ParseToken(token) if err != nil { global.GVA_LOG.Error("重新写入cookie token失败,未能成功解析token,请检查请求头是否存在x-token且claims是否为规定结构") diff --git a/utils/user_jwt/claims.go b/utils/user_jwt/claims.go index 6162463..0cc3d29 100644 --- a/utils/user_jwt/claims.go +++ b/utils/user_jwt/claims.go @@ -12,41 +12,41 @@ import ( ) func ClearToken(c *gin.Context) { - // 增加cookie app-token 向来源的web添加 + // 增加cookie Authorization 向来源的web添加 host, _, err := net.SplitHostPort(c.Request.Host) if err != nil { host = c.Request.Host } if net.ParseIP(host) != nil { - c.SetCookie("app-token", "", -1, "/", "", false, false) + c.SetCookie("Authorization", "", -1, "/", "", false, false) } else { - c.SetCookie("app-token", "", -1, "/", host, false, false) + c.SetCookie("Authorization", "", -1, "/", host, false, false) } } func SetToken(c *gin.Context, token string, maxAge int) { - // 增加cookie app-token 向来源的web添加 + // 增加cookie Authorization 向来源的web添加 host, _, err := net.SplitHostPort(c.Request.Host) if err != nil { host = c.Request.Host } if net.ParseIP(host) != nil { - c.SetCookie("app-token", token, maxAge, "/", "", false, false) + c.SetCookie("Authorization", token, maxAge, "/", "", false, false) } else { - c.SetCookie("app-token", token, maxAge, "/", host, false, false) + c.SetCookie("Authorization", token, maxAge, "/", host, false, false) } } func GetToken(c *gin.Context) string { - token := c.Request.Header.Get("app-token") + token := c.Request.Header.Get("Authorization") if token == "" { j := NewUserJWT() - token, _ = c.Cookie("app-token") + token, _ = c.Cookie("Authorization") claims, err := j.ParseToken(token) if err != nil { - global.GVA_LOG.Error("重新写入cookie token失败,未能成功解析token,请检查请求头是否存在app-token且claims是否为规定结构") + global.GVA_LOG.Error("重新写入cookie token失败,未能成功解析token,请检查请求头是否存在Authorization且claims是否为规定结构") return token } SetToken(c, token, int((claims.ExpiresAt.Unix()-time.Now().Unix())/60)) @@ -59,7 +59,7 @@ func GetClaims(c *gin.Context) (*systemReq.CustomClaims, error) { j := NewUserJWT() claims, err := j.ParseToken(token) if err != nil { - global.GVA_LOG.Error("从Gin的Context中获取从jwt解析信息失败, 请检查请求头是否存在app-token且claims是否为规定结构") + global.GVA_LOG.Error("从Gin的Context中获取从jwt解析信息失败, 请检查请求头是否存在Authorization且claims是否为规定结构") } return claims, err }