Javascript 无法使用mongoose获取简单的passportjs
我正在使用并尝试使用存储库中的设置一个简单的工作示例。但我遇到了问题,我收到一条错误消息,上面说“错误:无法将用户序列化到会话中” 我在一篇文章中再现了这个问题。(要运行gist,您需要替换user.js文件中的mongodb服务器IP和数据库名称,并使用Javascript 无法使用mongoose获取简单的passportjs,javascript,node.js,express,passport.js,Javascript,Node.js,Express,Passport.js,我正在使用并尝试使用存储库中的设置一个简单的工作示例。但我遇到了问题,我收到一条错误消息,上面说“错误:无法将用户序列化到会话中” 我在一篇文章中再现了这个问题。(要运行gist,您需要替换user.js文件中的mongodb服务器IP和数据库名称,并使用用户名和密码值发布到/register端点。) 在其中,您将看到端点“/setval”和“/getval”,它们在会话中设置值并检索它,显示会话支持正在工作。端点“/authtest”给出了未经授权的响应,即使在向“/login”发送了一个PO
用户名
和密码
值发布到/register端点。)
在其中,您将看到端点“/setval”和“/getval”,它们在会话中设置值并检索它,显示会话支持正在工作。端点“/authtest”给出了未经授权的响应,即使在向“/login”发送了一个POST之后也是如此。端点“/authdebug”提供了更多信息—上面提到的错误
有人知道发生了什么事吗?我已经没有东西可以尝试了。我认为
passport.authenticate
应该只在实际用于验证用户身份的路由上使用;在您的情况下,这将是/login
路径
对于要确保用户之前已通过身份验证的路由,如/authtest
,需要一个中间件来检查用户是否已通过身份验证:
该中间件的另一种选择是
function ensureAuthenticated(req, res, next) {
if (req.isAuthenticated()) {
return next();
}
res.redirect('/login'); // or your login page
}
// and
app.get('/authtest', ensureAuthenticated, function(req, res) {
...
});