Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法使用mongoose获取简单的passportjs_Javascript_Node.js_Express_Passport.js - Fatal编程技术网

Javascript 无法使用mongoose获取简单的passportjs

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

我正在使用并尝试使用存储库中的设置一个简单的工作示例。但我遇到了问题,我收到一条错误消息,上面说“错误:无法将用户序列化到会话中”

我在一篇文章中再现了这个问题。(要运行gist,您需要替换user.js文件中的mongodb服务器IP和数据库名称,并使用
用户名
密码
值发布到/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) {
 ...
});