护照 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)
})
})
我正在尝试使用快速会话来登录用户。我希望用户在登录后能够转到个人资料页面并查看他们的用户数据。
在我的 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)
})
})