1

当我POST到调用的端点时passport.authenticate,我没有得到响应,服务器也没有继续执行中定义的策略passport.use。在 Heroku 上,我收到错误 H12(超时),我的浏览器在本地响应“未收到数据”。

我使用有此问题的代码签入了 GitHub 。

这不是数据库问题—— aconsole.log之前调用过.findOne,但该消息从未被记录。它似乎只停留在passport.authenticate. 为什么?

这里发生了什么?我还能做些什么来诊断吗?

4

3 回答 3

2

结果passport.authenticate(…)返回一个中间件风格的函数。

我以错误的方式调用它打破了响应链。在我的 site.js 模块中,exports.login应该设置为的结果passport.authenticate(…),它不应该调用它,即:

exports.login = passport.authenticate('local', {
  successRedirect: '/result',
  failureRedirect: '/login'
});
于 2012-11-01T01:24:59.140 回答
0

尝试将app.js 的第 38 行更改为:

User.findOne({ id: id }, ...)

或者

User.findById(id, ...)
于 2012-11-01T00:44:44.380 回答
0

尝试将此添加到您的护照配置中

  passport.serializeUser((user, done) => {
    done(null, user);
  });
  passport.deserializeUser((id, done) => {
    User.findById(id).then(user => done(null, user));
  });
于 2019-03-11T12:12:56.793 回答