首页 > 解决方案 > Passport js反序列化黑名单错误

问题描述

我正在将 Nodejs 与 passport.js 一起使用。一旦我在我的服务器上运行localhost:3000,我就一直在

错误:无法将用户反序列化出会话

我在这个Github 线程上找到了解决方案。

passport.deserializeUser(function(obj, done) {
  done(null, false);  // invalidates the existing login session.
}); 

从线程:

就目前的情况而言,一旦您遇到反序列化错误,您基本上就会被列入黑名单

这可能是我对会话的理解不足,但即使我重新启动服务器,我也会不断收到上述错误。我在哪里被列入黑名单?重新启动服务器不应该清除所有服务器会话吗?

标签: node.jspassport.js

解决方案


你应该这样做

passport.serializeUser(function (user, done) {
  // this user is from your passport strategy
  // for example: https://github.com/jaredhanson/passport-local#user-content-configure-strategy
  // the data you give will store into session
  done(null, user._id); 
});

passport.deserializeUser(function (id, done) {
  // the id is from session which store by serializeUser function
  // this function should varify user and return its data to passport
  // when passport jobs done
  // you can access user data from req.user in express; ctx.state.user in koa
  1User.findById(id, function (err, user) {
    done(err, user); // if user is null, will block user
  });
});

推荐阅读