Я использую passport.js с локальной стратегией аутентификации для своего приложения node.js/express.Как я могу заставить обновление req.user?
Пользователь, который был возвращен LocalStrategy
, включает такие элементы, как электронная почта и имя пользователя.
Я хочу дать пользователям возможность обновлять свою электронную почту или имя пользователя в приложении. Когда это произойдет, я хотел бы сообщить паспорт, чтобы перезагрузить пользователя (похоже, как если бы они только что вошли в систему), так что req.user отражает обновленные изменения в оставшейся части сеанса. Просто установка этого, похоже, не прошла в прошлом одном запросе.
Упрощенный пример:
app.get('/changeEmail', function(req, res, next) {
var userId = req.user.id;
var origEmail = req.user.email;
var newEmail = req.param('email');
userDao.updateEmail(userId, newEmail, function(err) {
if (!err) {
// user's email has changed, need change reflected in req.user from this point on
req.user.email = newEmail;
}
next();
});
});
Одна вещь, которую я должен был наблюдать, заключалась в том, чтобы передавать req.logIn как переменную и вызывать ее позже, поскольку контекст, который он называет (от req), важен для того, как работает промежуточное программное обеспечение. – Zugwalt