jwt.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package jwt
  2. import (
  3. "demo/internal/app"
  4. "demo/internal/util"
  5. "github.com/dgrijalva/jwt-go"
  6. "github.com/gogf/gf/v2/net/ghttp"
  7. )
  8. //r *ghttp.Request
  9. func JWT(r *ghttp.Request) {
  10. var code int
  11. var data interface{}
  12. code = app.SUCCESS
  13. Authorization := r.GetHeader("token")
  14. token := Authorization
  15. if Authorization == "" {
  16. code = app.INVALID_PARAMS
  17. } else {
  18. _, err := util.ParseToken(token)
  19. if err != nil {
  20. switch err.(*jwt.ValidationError).Errors {
  21. case jwt.ValidationErrorExpired:
  22. code = app.ERROR_AUTH_CHECK_TOKEN_TIMEOUT
  23. default:
  24. code = app.ERROR_AUTH_CHECK_TOKEN_FAIL
  25. }
  26. }
  27. }
  28. if code != app.SUCCESS {
  29. r.Response.WriteJson(map[string]interface{}{
  30. "code": code,
  31. "msg": "登录超时",
  32. "data": data,
  33. })
  34. return
  35. }
  36. t, _ := jwt.Parse(token, func(*jwt.Token) (interface{}, error) {
  37. return util.JwtSecret, nil
  38. })
  39. //r.Context().Value()
  40. //r.Context().Value("jwt_username") = util.GetIdFromClaims("username", t.Claims)
  41. //r.Set
  42. r.SetCtxVar("jwt_username", util.GetIdFromClaims("username", t.Claims))
  43. r.Middleware.Next()
  44. }