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

时间:2016-05-04 07:56:34

标签: node.js session express passport.js

我正在使用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

0 个答案:

没有答案