jwt.go 656 B

123456789101112131415161718192021222324252627282930
  1. package config
  2. import (
  3. "context"
  4. "github.com/golang-jwt/jwt/v5"
  5. "github.com/labstack/echo-jwt/v4"
  6. "github.com/labstack/echo/v4"
  7. )
  8. const ctxKeyJwt = "echo.ctx.jwt"
  9. func (c Configuration) EchoJwtMiddleware() echo.MiddlewareFunc {
  10. return echojwt.WithConfig(echojwt.Config{
  11. ContextKey: ctxKeyJwt,
  12. SigningKey: []byte(c.SecretKey),
  13. SuccessHandler: func(ctx echo.Context) {
  14. val := context.WithValue(ctx.Request().Context(), ctxKeyJwt, ctx.Get(ctxKeyJwt))
  15. ctx.SetRequest(ctx.Request().WithContext(val))
  16. },
  17. })
  18. }
  19. func Token(ctx context.Context) *jwt.Token {
  20. t, ok := ctx.Value(ctxKeyJwt).(*jwt.Token)
  21. if !ok {
  22. return nil
  23. }
  24. return t
  25. }