更新会话中登录的用户详细信息

cal*_*tie 22 node.js express passport-local passport.js

我正在使用PassportJS和ExpressJS.

我需要更新登录的用户详细信息.虽然我在数据库中更新了这个,但是如何在会话中更新它,以便request.user包含更新的用户详细信息?

也就是说,在更新数据库之后,如何更新用户的会话信息?

我尝试直接分配更新的详细信息,request.user但它没有用.然后我尝试了request.session.passport.user- 这有效但是在request.user中更新之前还有大约5到10秒的延迟.

是否需要调用一个函数来更新存储在会话中的用户信息?或者是否有一些其他对象我可以更新,其中更改没有延迟

chi*_*tte 31

我也一直在寻找答案.在任何文档或教程中都没有提到过!

似乎有用的是,在保存新更新的用户后,执行req.login(user)...

// "user" is the user with newly updated info
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)
    })
})
Run Code Online (Sandbox Code Playgroud)

线索在这里... https://github.com/jaredhanson/passport/issues/208