无法使用猫鼬工作获得简单的passportjs

时间:2013-03-25 09:06:08

标签: javascript node.js express passport.js

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

我在gist中重现了这个问题。 (要运行要点,您需要替换user.js文件中的mongodb服务器IP和数据库名称,并使用usernamepassword值对/ register端点执行POST。)

在其中,您将看到端点'/ setval'和'/ getval',它们在会话中设置值并检索它,表明会话支持正在运行。即使在对'/ login'进行POST之后,端点'/ authtest'也会给出未经授权的响应。端点'/ authdebug'提供了更多信息 - 上面提到的错误。

任何人对于发生的事情都有任何想法?我的事情已经不多了。

1 个答案:

答案 0 :(得分:1)

我认为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) {
 ...
});

该中间件的替代方案是connect-ensure-login