繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM