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 调用中包含凭据。