最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

passportjs google oauth2策略

运维笔记admin14浏览0评论

passportjs google oauth2策略

passportjs google oauth2策略

在PassportJS Google OAuth策略中,由于一些奇怪的原因,当我序列化用户ID并将其发送到cookie以发送到浏览器时,它不会返回id来反序列化它,这告诉我因为当我console.log用户时,它返回undefined

passport.deserializeUser((id, done) => {
    User.findById(id).then((user, done) => {
        console.log(user);
        done(null, user);
    });
});

详细说明我的cookie在下面

app.use(cookieSession({
  maxAge: 24 * 60 * 60 * 1000,
  keys: 'dkfehfhgddf'
}));
回答如下:

如果您使用的是Mongoose,则表示您的代码中存在错误,导致意外行为。

如果您尝试使用findById()功能的Promise版本,则必须在之后调用.exec(),以便发送操作。此外,你已经遮蔽了deserializeUserdone回调,所以它永远不会被调用。

这是它应该如何工作:

passport.deserializeUser((id, done) => {
  User.findById(id).exec()
    .then(user => {
      if (user) {// user may be null
        done(null, user);
      } else {
        done(new Error("User not found"), null);
      }  
   })
   .catch(error => {
     done(error, false);
   });
});

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论