jwt.go 769 B

12345678910111213141516171819202122232425262728293031323334
  1. package middleware
  2. import (
  3. "context"
  4. "fmt"
  5. "github.com/golang-jwt/jwt/v5"
  6. echojwt "github.com/labstack/echo-jwt/v4"
  7. "github.com/labstack/echo/v4"
  8. )
  9. func Jwt(secret []byte) echo.MiddlewareFunc {
  10. var (
  11. sKeyJwtToken = fmt.Sprintf("%s", keyJwtToken)
  12. cfg = echojwt.Config{
  13. ContextKey: sKeyJwtToken,
  14. SigningKey: secret,
  15. SuccessHandler: func(ctx echo.Context) {
  16. value := context.WithValue(ctx.Request().Context(), keyJwtToken, ctx.Get(sKeyJwtToken))
  17. ctx.SetRequest(ctx.Request().WithContext(value))
  18. },
  19. }
  20. )
  21. return echojwt.WithConfig(cfg)
  22. }
  23. func GetToken(ctx context.Context) (*jwt.Token, error) {
  24. t, ok := ctx.Value(keyJwtToken).(*jwt.Token)
  25. if !ok {
  26. return nil, fmt.Errorf("missing or malformed token")
  27. }
  28. return t, nil
  29. }