11

给定以下路线:

router.get('/api/members/confirm/:id, function (req, res, next)

如何指定要排除的路线?我努力了:

app.use('/api', expressJwt({ secret: config.secret}).unless({path: ['/api/members/confirm']}));

app.use('/api', expressJwt({ secret: config.secret}).unless({path: ['/api/members/confirm/:id']}));

但是除非数组中的路径似乎都不起作用?

4

2 回答 2

22

express-jwt模块正在使用express-unless为您提供此unless方法,该方法不接受 express 的:param路径参数语法。

但它确实接受正则表达式,所以你可以这样做:

app.use('/api', expressJwt({ secret: config.secret}).unless({path: [/^\/api\/members\/confirm\/.*/]}));

如果你不喜欢这样,你也可以给 unless 一个函数:

var myFilter = function(req) {return true;}
app.use('/api', expressJwt({ secret: config.secret}).unless(myFilter));
于 2015-05-31T16:37:33.873 回答
14

您必须使用正则表达式来实现您正在寻找的东西,您还可以添加另一个字段来指定允许的方法,如下所示:

expressJwt({ secret, isRevoked }).unless({
    path: [
        { url: /^\/api\/members\/confirm\/.*/, methods: ['GET', 'PUT'] }
    ]
})
于 2018-10-05T18:52:53.103 回答