12345678910111213141516171819202122232425262728293031323334 |
- package middleware
- import (
- "context"
- "fmt"
- "github.com/golang-jwt/jwt/v5"
- echojwt "github.com/labstack/echo-jwt/v4"
- "github.com/labstack/echo/v4"
- )
- func Jwt(secret []byte) echo.MiddlewareFunc {
- var (
- sKeyJwtToken = fmt.Sprintf("%s", keyJwtToken)
- cfg = echojwt.Config{
- ContextKey: sKeyJwtToken,
- SigningKey: secret,
- SuccessHandler: func(ctx echo.Context) {
- value := context.WithValue(ctx.Request().Context(), keyJwtToken, ctx.Get(sKeyJwtToken))
- ctx.SetRequest(ctx.Request().WithContext(value))
- },
- }
- )
- return echojwt.WithConfig(cfg)
- }
- func GetToken(ctx context.Context) (*jwt.Token, error) {
- t, ok := ctx.Value(keyJwtToken).(*jwt.Token)
- if !ok {
- return nil, fmt.Errorf("missing or malformed token")
- }
- return t, nil
- }
|