Как мы все знаем, Passport.js
хранит все детали в req.users
и
Не обязательно.passport.js
не store
пользовательские данные в req.user
, но ваш 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
(что не рекомендуется, если вы действительно не понимаете, что делаете), тогда вам нужно подумать о стратегии синхронизации, например, установить флаг updated
в db
или некоторый кеш при десериализации