使用req.login()刷新passport.js会话数据

我正在使用passport.js。 问题是当我更改用户名称等用户信息时,直到用户重新login才更改。 如果用户注销并再次login,则信息已更改。 但我想在不重新login的情况下更改会话

我的反序列化用户函数如下所示,它看起来不同的原始护照的例子,因为它是从会议拾取数据,而不是查询数据库。 我想加载速度,所以我没有使用反序列化函数的数据库查询。

passport.deserializeUser(function(userSession, done){ var member = { id : userSession[0], name : userSession[1] }; done(null, member); }); 

所以我想我必须像下面那样使用req.login() ,但会话不会改变。

 Members.findOne({_id : someId }, function(err, member){ member[username] = req.body.username; member.save(function (err){ if(err) return next(); console.log('The original session :'+req.sessionId); req.login(req.user, {}, function(err){ if (err) return next(); console.log('The new session :'+req.sessionId); res.send(200); }); }) }) 

问题是原来的会话和新的会话是一样的,我怎样才能强制刷新req.user对象?

我冲这个文件,但没有得到解决办法。 https://github.com/jaredhanson/passport/issues/208

       

网上收集的解决方案 "使用req.login()刷新passport.js会话数据"