我正在使用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
并检查其他内容的中间件,但如果已经完成,我想避免重新发明轮子。
答案 0 :(得分:1)
您是否尝试过创建一条路线:
app.post('/api/login')
之后,您将路由器定义为:
app.user('/api', router) // Register the route to /api
最后在你的路由器文件中,在顶部,你做
router.use(passport.authenticate('jwt', { session: false }))