node.js - nodejs - Actualizar los datos de usuario registrados en la sesión
node js tutorial (1)
Estoy utilizando PassportJS con ExpressJS.
Necesito actualizar los datos de usuario registrados. Mientras actualizo esto en la base de datos, ¿cómo lo actualizo también en la sesión para que request.user contenga los detalles actualizados del usuario?
Es decir, después de actualizar la base de datos, ¿cómo actualizo también la información de la sesión en el usuario?
Intenté asignar directamente los detalles actualizados a request.user
pero no funcionó. Luego intenté request.session.passport.user
: esto funcionó, pero hay un retraso de alrededor de 5 a 10 segundos antes de que se actualice en request.user también.
¿Hay alguna función a la que deba llamar que actualice la información de usuario almacenada en la sesión? ¿O hay algún otro objeto que pueda actualizar donde el cambio no tenga un retraso?
También he estado buscando una respuesta para esto. ¡Nunca mencionado en ningún docs o tutoriales!
Lo que parece funcionar es, después de guardar su usuario recién actualizado, hacer req.login(user)
...
// "user" is the user with newly updated info
user.save(function(err) {
if (err) return next(err)
// What''s happening in passport''s 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)
})
})
La pista estaba aquí ... https://github.com/jaredhanson/passport/issues/208