Skip to content

JWT

package main
import (
"log"
"os"
jwt "github.com/golang-jwt/jwt/v5"
"github.com/0mjs/zinc"
"github.com/0mjs/zinc/middleware"
)
func main() {
app := zinc.New()
secret := []byte(os.Getenv("JWT_SECRET"))
api := app.Group("/api", middleware.JWT(
func(_ *zinc.Context, _ *jwt.Token) (any, error) {
return secret, nil
},
))
api.Get("/me", func(c *zinc.Context) error {
claims, ok := middleware.JWTClaims[jwt.MapClaims](c)
if !ok {
return zinc.NewError(zinc.StatusUnauthorized)
}
return c.JSON(claims)
})
log.Fatal(app.Listen())
}

The default extractor expects Authorization: Bearer <token>. Zinc also provides extractors for custom headers, cookies, query parameters, and fallback chains. See JWT middleware.