fasthttprouter icon indicating copy to clipboard operation
fasthttprouter copied to clipboard

JWT middleware support

Open basilex opened this issue 7 years ago • 3 comments

It whould be nice to have an implementation of JWT auth middleware like an existing basic auth. Thanx!

basilex avatar Nov 27 '17 12:11 basilex

I would like this too!

ChadTaljaardt avatar Apr 08 '18 16:04 ChadTaljaardt

Example of auth middleware for fasthttp & fasthttprouter

type Middleware func(h fasthttp.RequestHandler) fasthttp.RequestHandler
type AuthFunc func(ctx *fasthttp.RequestCtx) bool
func NewAuthMiddleware(authFunc AuthFunc) Middleware {
    return func(h fasthttp.RequestHandler) fasthttp.RequestHandler {
        return func(ctx *fasthttp.RequestCtx) {
            result, err := authFunc(ctx)
            if result {
                h(ctx)
            } else {
                ctx.Response.SetStatusCode(fasthttp.StatusUnauthorized)
            }
        }
    }
}

func AuthCheck(ctx *fasthttp.RequestCtx) (bool, error) {
    return false; // for example ;)
}

// router
authMiddleware := middleware.NewAuthMiddleware(security.AuthCheck)
...
router.GET("/protected", authMiddleware(handlers.ProtectedHandler))

DarkDrim avatar May 29 '18 11:05 DarkDrim

i think middleware should not too coupled in the router. you should implement your middleware in your appliaction yourself because it depends on how the security of your appliaction.

rafgugi avatar Jun 07 '20 13:06 rafgugi