Reputation: 698
I'm trying to update the passport session after user info change using:
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)
})
})
But even after re-login, with no errors my passport session remains the same. I have to manually logout and log back in for the session info to update. Can anyone explain what's happening?
Upvotes: 0
Views: 722
Reputation: 5078
Passport sets req.user
using the function you have provided with passport.deserializeUser
. You are using req.session.passport.user
which is incorrect. There is no need to re-login after change of user information - deserializeUser
is called on every request, and this is where you fetch the user information from your database. Then you access it via req.user
.
Upvotes: 1