众所周知,Passport.js 将所有详细信息存储到req.users 和
不一定。 passport.js 在req.user 中没有store 用户详细信息,而是您的passport.js 集成代码loads 来自某些后端存储的用户详细信息,然后将其放入每个请求的请求对象中。
因此,您可以在后端更新用户并决定何时检索每个请求的新版本(而不是仅仅反序列化 jwt,例如)。
来自http://www.passportjs.org/docs/basic-digest/的示例代码
passport.use(new BasicStrategy(
function(username, password, done) {
User.findOne({ username: username }, function (err, user) {
if (err) { return done(err); }
if (!user) { return done(null, false); }
if (!user.validPassword(password)) { return done(null, false); }
return done(null, user);
});
}
));
此代码在每个请求上执行,这意味着在对服务器的每个请求中,您的用户都会从您的数据库中加载。
即使您在多个浏览器中处理多个会话,结果也是相同的。因此,您可以自行决定何时以及如何更新数据库中的用户。
否则,如果您不从外部数据源加载用户,但例如从jwt 反序列化整个用户对象(除非您真正了解自己在做什么,否则不建议这样做)然后您需要考虑同步策略,例如检查db 中的一些updated 标志或反序列化时的一些缓存