JWT How to bypass certain API routes and http meth

2019-08-09 16:55发布

问题:

I can make get JSON-Web-Token to ignore paths using .unless like this.

app.use(expressJWT({secret: config.JWTSECRET}).unless({path: 
['/register', 
'/authentication',
]}));

I have a route with different HTTP methods (get, put, post, delete). I want the GET version of /events to not require a token, but the POST version of /event to require a token. Can I do this without having different routes for GET and POST etc.

/events //GET - no token required
/events //POST - token required

回答1:

If I know right, the express-jwt module is using express-unless to give you .unless method. With that, you can use a custom function to filter the request.

var filter = function(req) {return true;}
app.use(expressJWT({ secret: config.JWTSECRET}).unless(filter));

In the filter function, you can check the route (req.path) and the request type (req.method).