package jws import ( "git.aionnect.com/aionnect/go-common/utils" "github.com/gin-gonic/gin" "net/http" ) // JWT中间件,检查token,校验不通过报错 func NeedLogin() gin.HandlerFunc { return func(ctxt *gin.Context) { token := GetToken(ctxt) if token == "" { res := utils.E(http.StatusUnauthorized, "无权限访问", nil) res.Head.HttpStatus = http.StatusUnauthorized panic(res) return } j := NewJWT() // parseToken 解析token包含的信息 claims, err := j.ParseToken(token) if err != nil { res := utils.E(http.StatusUnauthorized, err.Error(), nil) res.Head.HttpStatus = http.StatusUnauthorized panic(res) return } claims.Token = token // 继续交由下一个路由处理,并将解析出的信息传递下去 ctxt.Set(Claims, claims) ctxt.Next() } } // JWT中间件,仅通过token获取载荷信息,校验不通过也不报错 func GetClaims() gin.HandlerFunc { return func(ctxt *gin.Context) { token := GetToken(ctxt) if token != "" { j := NewJWT() // parseToken 解析token包含的信息 claims, err := j.ParseToken(token) if err == nil { claims.Token = token // 继续交由下一个路由处理,并将解析出的信息传递下去 ctxt.Set(Claims, claims) } else { claims = &TokenClaims{Token: token} } } ctxt.Next() } }