【发布时间】:2021-01-06 18:52:54
【问题描述】:
我已经设置了一个相当简单的 Node Express 路由应用程序,我刚刚添加了 passport.js 身份验证。我现在正在尝试将其与现有路线集成。
我运行的基本中间件:
app.use(passport.initialize());
app.use(passport.session());
然后如果我运行一个简单的
app.get('/route', (req, res)=>{
console.log(req.user)
});
我得到了打印登录用户的预期结果。到目前为止一切顺利...
但是,我现在尝试在我设置的一些子路由中访问这个 req.user。在第一条路线中,我尝试的第一步是引入一个参数并将其与 req.user 进行比较:
app.use('/route/:userId', idRouter);
然后:
idRouter.param("userId", async (req, res, next, userId) => {
console.log(userId)
console.log(req.user.id)
})
此路由触发并打印出参数,但 req.user 未定义。我看不出出现这种情况的原因。
为了帮助调试,我在反序列化函数中添加了一些日志记录,我可以看到当我点击 idRouter 时它没有被调用。我不明白为什么会出现这种情况,因为它位于 app.use 函数中,每次都应该调用它。
请帮忙!
【问题讨论】:
-
显示
idRouter的声明
标签: node.js express passport.js