diff --git a/server/middleware/jwt.go b/server/middleware/jwt.go index 7f2decc4..576a3da4 100644 --- a/server/middleware/jwt.go +++ b/server/middleware/jwt.go @@ -66,6 +66,7 @@ func JWTAuth() gin.HandlerFunc { _ = jwtService.SetRedisJWT(newToken, newClaims.Username) } } + c.Set("claims", claims) c.Next() } } diff --git a/server/utils/clamis.go b/server/utils/clamis.go index f3c8bd33..b63919d2 100644 --- a/server/utils/clamis.go +++ b/server/utils/clamis.go @@ -7,33 +7,69 @@ import ( uuid "github.com/satori/go.uuid" ) -func GetClaims(c *gin.Context) *systemReq.CustomClaims { +func GetClaims(c *gin.Context) (*systemReq.CustomClaims,error) { token := c.Request.Header.Get("x-token") j := NewJWT() - claims, err := j.ParseToken(token) if err != nil { global.GVA_LOG.Error("从Gin的Context中获取从jwt解析信息失败, 请检查请求头是否存在x-token且claims是否为规定结构") } - return claims + return claims,err } // 从Gin的Context中获取从jwt解析出来的用户ID func GetUserID(c *gin.Context) uint { - return GetClaims(c).ID + if claims, exists := c.Get("claims"); !exists { + if cl,err:= GetClaims(c);err!=nil{ + return 0 + }else{ + return cl.ID + } + } else { + waitUse := claims.(*systemReq.CustomClaims) + return waitUse.ID + } + } // 从Gin的Context中获取从jwt解析出来的用户UUID func GetUserUuid(c *gin.Context) uuid.UUID { - return GetClaims(c).UUID + if claims, exists := c.Get("claims"); !exists { + if cl,err:= GetClaims(c);err!=nil{ + return uuid.UUID{} + }else{ + return cl.UUID + } + } else { + waitUse := claims.(*systemReq.CustomClaims) + return waitUse.UUID + } } // 从Gin的Context中获取从jwt解析出来的用户角色id func GetUserAuthorityId(c *gin.Context) string { - return GetClaims(c).AuthorityId + if claims, exists := c.Get("claims"); !exists { + if cl,err:= GetClaims(c);err!=nil{ + return "" + }else{ + return cl.AuthorityId + } + } else { + waitUse := claims.(*systemReq.CustomClaims) + return waitUse.AuthorityId + } } // 从Gin的Context中获取从jwt解析出来的用户角色id func GetUserInfo(c *gin.Context) *systemReq.CustomClaims { - return GetClaims(c) + if claims, exists := c.Get("claims"); !exists { + if cl,err:= GetClaims(c);err!=nil{ + return nil + }else{ + return cl + } + } else { + waitUse := claims.(*systemReq.CustomClaims) + return waitUse + } }