Обновление информации о пользователе в сеансе
Я использую PassportJS с ExpressJS.
Мне нужно обновить зарегистрированные данные пользователя. Хотя я обновляю это в БД, как мне его обновить в сеансе, так что request.user содержит обновленные данные пользователя?
То есть, после обновления базы данных, как мне также обновить информацию о сеансе пользователя?
Я попытался напрямую назначить обновленные данные request.user
, но это не сработало.
Затем я попробовал request.session.passport.user
- это сработало, но есть отсрочка около 5-10 секунд, прежде чем он будет обновлен в request.user тоже.
Есть ли функция, которую мне нужно вызвать, которая обновляет информацию пользователя, хранящуюся в сеансе? Или есть какой-то другой объект, который я могу обновить там, где изменение не имеет задержки
Ответы
Ответ 1
Я тоже искал ответ для этого. Никогда не упоминается ни в каких документах или учебниках!
Что, кажется, работает, после сохранения вашего недавно обновленного пользователя сделайте req.login(user)
...
// "user" is the user with newly updated info
user.save(function(err) {
if (err) return next(err)
// What happening in passport session? Check a specific field...
console.log("Before relogin: "+req.session.passport.user.changedField)
req.login(user, function(err) {
if (err) return next(err)
console.log("After relogin: "+req.session.passport.user.changedField)
res.send(200)
})
})
Ключ был здесь... https://github.com/jaredhanson/passport/issues/208