Node.js Passport会话-我希望在会话中存储用户信息,但在浏览器中仅存储id

Node.js Passport会话-我希望在会话中存储用户信息,但在浏览器中仅存储id,node.js,passport.js,Node.js,Passport.js,在passport的文档中,我可以通过以下方式进行序列化和反序列化: passport.serializeUser(function(user, done) { done(null, user.id); }); passport.deserializeUser(function(id, done) { User.findById(id, function(err, user) { done(err, user); }); }); 因为他们说:“在典型的web应用程序中,用

在passport的文档中,我可以通过以下方式进行序列化和反序列化:

passport.serializeUser(function(user, done) {
  done(null, user.id);
});

passport.deserializeUser(function(id, done) {
  User.findById(id, function(err, user) {
    done(err, user);
  });
});
因为他们说:“在典型的web应用程序中,用于验证用户身份的凭据仅在登录请求期间传输。如果验证成功,将通过用户浏览器中的cookie集建立和维护会话。”

但我在会话中需要更多信息,例如用户的admin标志,所以我编写了以下代码:

passport.serializeUser(function(user, done) {
    done(null, user);
});

passport.deserializeUser(function(user, done) {
    findUser(user.username).then((result)=>{
        done(null,result)
    })
}); 
现在,当我执行console.info(req.session)时——之后,我得到了我想要的:

  passport: {
    user: {
      _id: '60658af35cecea3308639385',
      username: 'Test1',
      password: '$2b$10$ScrsMi51eUFi4.Iv49aTC.BD/OIuGgtRN9l4R9OGUj3hZEecI9MIC',
      admin: 0
    }
  }
但我现在有一个问题:
所以,如果我不是按文档中的id而是按整个用户的id,entrie用户现在是id吗?所有这些信息都在我用户的cookies浏览器中吗?如何在会话中准确存储,例如admin flag-有关此用户的更多信息,但不能仅在会话中存储在其浏览器中。

您可以使用express session,它可以存储数据并尽可能保密。下面是一个使用它的示例。

   app.use(session({
  secret: 'keyboard cat',
  resave: false,
  saveUninitialized: true,
  cookie: { secure: true }
}))