[英]Refresh passport.js session data using req.login()
我正在使用passport.js。 问题是当我更改用户信息(例如用户名)时,直到用户重新登录才更改。 如果用户注销并再次登录,则信息已更改。 但我想更改会话而不重新登录。
我的deserializeUser函数如下所示,它看起来像原始护照的示例,因为它是从会话中提取数据而不是查询数据库。 我想加快加载速度,所以我没有在反序列化功能上使用数据库查询。
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.