护照req.isAuthenticated()总是返回fasle

时间:2015-12-28 04:35:41

标签: javascript node.js session express passport.js

我尝试使用快速会话登录用户。我希望用户能够在他们登录后访问个人资料页面并查看他们的用户数据。

在我的routes.js的第9行:req.isAuthenticate()返回false,即使我已经成功登录了用户。

我的最终目标是req.user,护照保存到会话,在/ passport GET路由中定义,以便我可以将其作为数据发送到我的模板引擎。

https://gist.github.com/anonymous/f6ecb472eb082775181e#file-routes-js-L9

提前致谢

1 个答案:

答案 0 :(得分:3)

我相信您的序列化/反序列化有问题。

在序列化时,您需要指定序列化用户的方式。根据您的代码,您使用用户的ID来序列化它们。这就是用于反序列化的内容。因此,您应该只需要输入参数中的ID,并且必须找到链接到该ID的用户并将其传递给回调。

这就是你应该做的:

passport.serializeUser(function(user, done){
  done(null, user.id)
})

passport.deserializeUser(function(id, done){
  User.findById(id, function(err, user){
    done(err, user)
  })
})