package jwt import ( "demo/internal/app" "demo/internal/util" "github.com/dgrijalva/jwt-go" "github.com/gogf/gf/v2/net/ghttp" ) //r *ghttp.Request func JWT(r *ghttp.Request) { var code int var data interface{} code = app.SUCCESS Authorization := r.GetHeader("token") token := Authorization if Authorization == "" { code = app.INVALID_PARAMS } else { _, err := util.ParseToken(token) if err != nil { switch err.(*jwt.ValidationError).Errors { case jwt.ValidationErrorExpired: code = app.ERROR_AUTH_CHECK_TOKEN_TIMEOUT default: code = app.ERROR_AUTH_CHECK_TOKEN_FAIL } } } if code != app.SUCCESS { r.Response.WriteJson(map[string]interface{}{ "code": code, "msg": "登录超时", "data": data, }) return } t, _ := jwt.Parse(token, func(*jwt.Token) (interface{}, error) { return util.JwtSecret, nil }) //r.Context().Value() //r.Context().Value("jwt_username") = util.GetIdFromClaims("username", t.Claims) //r.Set r.SetCtxVar("jwt_username", util.GetIdFromClaims("username", t.Claims)) r.Middleware.Next() }