package middleware import ( "github.com/gin-gonic/gin" "testData/model/response" "testData/repository" "testData/utils" ) func JWTAuth() gin.HandlerFunc { return func(c *gin.Context) { token := c.Request.Header.Get("x-token") if token == "" { response.FailWithDetailed(gin.H{"reload": true}, "未登录或非法访问", c) c.Abort() return } j := utils.NewJWT() // parseToken 解析token包含的信息 claims, err := j.ParseToken(token) if err != nil { if err == utils.TokenExpired { response.FailWithDetailed(gin.H{"reload": true}, "授权已过期", c) c.Abort() return } response.FailWithDetailed(gin.H{"reload": true}, err.Error(), c) c.Abort() return } if err, u := repository.GetUserByID(claims.ID); err != nil { response.FailWithDetailed(gin.H{"reload": true}, err.Error(), c) c.Abort() } else { c.Set("claims", u) c.Next() } } }