当我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'
});