当我POST
到调用passport.authenticate
的端点时,我得不到响应,服务器也没有进入passport.use
中定义的策略。在Heroku上,我收到错误H12(超时),在本地我的浏览器响应“没有收到数据。”
我使用有此问题的代码制作了a checkin to GitHub。
这不是数据库问题 - 在console.log
之前调用.findOne
,但永远不会记录该消息。它似乎停在passport.authenticate
。为什么呢?
这里发生了什么?还有其他我可以做的诊断吗?
答案 0 :(得分:2)
结果passport.authenticate(…)
返回一个中间件风格的函数。
我通过错误的方式打破了响应链。在我的site.js模块中,exports.login
应该设置为passport.authenticate(…)
的结果,它不应该调用它,即:
exports.login = passport.authenticate('local', {
successRedirect: '/result',
failureRedirect: '/login'
});
答案 1 :(得分:0)
答案 2 :(得分:0)
尝试将其添加到您的护照配置中
passport.serializeUser((user, done) => {
done(null, user);
});
passport.deserializeUser((id, done) => {
User.findById(id).then(user => done(null, user));
});