【发布时间】:2021-04-02 00:53:38
【问题描述】:
在护照的文档中,我可以阅读以进行序列化和反序列化:
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.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 并且所有这些信息都在我用户的 cookie 浏览器中?如何在会话中小心地存储例如管理员标志 - 有关此用户的更多信息,但仅在会话中不在他的浏览器中。
【问题讨论】:
标签: node.js passport.js