护照 req.isAuthenticated() 总是 returns fasle

passport req.isAuthenticated() always returns fasle

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

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

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

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

提前致谢

我认为您的 serialization/deserialization 有问题。

关于序列化,您需要指定如何序列化用户。根据您的代码,您正在使用用户的 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)
  })
})