Passportjs排除资源

时间:2018-04-17 14:23:37

标签: node.js express passport.js

我正在使用expressjs处理API端点并使用passportjs保护它(使用jwt策略)

我有

 passport.use(new JwtStrategy({...})) // Register stratrgy

 router.post('/login', (req, res) => {} ) // Generates jwt token

 app.use('/api', passport.authenticate('jwt', { session: false }));

 app.user('/api', router) // Register the route to /api

如果我将/login放在/api之外,这样就行了。但是我希望在同一个根路径(/login)中有一些像/api这样的资源不受保护。

我可以继续为每个路线注册添加passport.authenticate('jwt', { session: false }),除了不受保护的一次,但我不喜欢这样。

我还可以创建一个手动调用passport.authenticate并检查其他内容的中间件,但如果已经完成,我想避免重新发明轮子。

1 个答案:

答案 0 :(得分:1)

您是否尝试过创建一条路线:

app.post('/api/login')

之后,您将路由器定义为:

app.user('/api', router) // Register the route to /api

最后在你的路由器文件中,在顶部,你做

router.use(passport.authenticate('jwt', { session: false }))