【问题标题】:router.param not triggering passport.js initialize in app.userouter.param 未触发 passport.js 在 app.use 中初始化
【发布时间】: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


【解决方案1】:

我最终解决了这个问题,这是 CORS 的问题。只需在 API 调用中包含凭据即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-20
    • 2012-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多