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

我用有此问题的代码做了a checkin to GitHub

这不是数据库问题-在console.log之前调用.findOne,但是从不记录该消息。它似乎只是在passport.authenticate处停止。为什么?

这里发生了什么?我还有其他方法可以诊断吗?

最佳答案

事实证明,passport.authenticate(…)返回一个中间件样式的函数。

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

exports.login = passport.authenticate('local', {
  successRedirect: '/result',
  failureRedirect: '/login'
});

07-24 09:37
查看更多