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

我正在尝试使用快速会话来login用户。 我希望用户能够访问个人资料页面并查看他们的用户数据(如果他们已经login)。

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

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

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

提前致谢

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

在序列化时,您需要指定如何序列化用户。 根据你的代码,你正在使用用户的ID来序列化它们。 这就是将用于反序列化的东西。 所以,你应该只从input参数中得到一个ID,你必须find链接到这个ID的用户并把它传递给callback函数。

这将是你应该做的:

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