router.param 未触发 passport.js 在 app.use 中初始化
router.param not triggering passport.js initialize in app.use
我已经设置了一个相当简单的 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 是 undefined。我看不出为什么会这样。
为了帮助调试这个问题,我在反序列化函数中放置了一些日志记录,当我点击 idRouter 时,我可以看到它没有被调用。我不明白为什么会出现这种情况,因为它在 app.use 函数中,每次都应该调用。
请帮忙!
最后我解决了这个问题,这是CORS的问题。只需要在 API 调用中包含凭据。
我已经设置了一个相当简单的 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 是 undefined。我看不出为什么会这样。
为了帮助调试这个问题,我在反序列化函数中放置了一些日志记录,当我点击 idRouter 时,我可以看到它没有被调用。我不明白为什么会出现这种情况,因为它在 app.use 函数中,每次都应该调用。
请帮忙!
最后我解决了这个问题,这是CORS的问题。只需要在 API 调用中包含凭据。