passport req.isAuthenticated()总是返回fasle

passport req.isAuthenticated() always returns fasle

本文关键字:返回 fasle req isAuthenticated passport      更新时间:2023-09-26

我正在尝试使用express会话登录用户。我希望用户能够转到配置文件页面,并查看他们的用户数据,如果他们已经登录。

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

我的最终目标是在/password GET路由中定义req.user,即保存到会话的passport,这样我就可以将其作为数据发送到我的临时引擎。

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

提前感谢

我认为您的序列化/反序列化有问题。

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