【问题标题】:Passport session not updating护照会话未更新
【发布时间】:2016-06-08 22:23:13
【问题描述】:

我正在尝试在用户信息更改后更新护照会话:

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)
})
})

但即使在重新登录后,我的护照会话也没有出现任何错误。我必须手动注销并重新登录才能更新会话信息。谁能解释发生了什么?

【问题讨论】:

    标签: node.js passport.js


    【解决方案1】:

    Passport 使用passport.deserializeUser 提供的功能设置req.user。您正在使用req.session.passport.userwhich is incorrect。更改用户信息后无需重新登录 - 每个请求都会调用deserializeUser,这是您从数据库中获取用户信息的地方。然后你通过req.user访问它。

    【讨论】:

    • 最好仅在会话中实际更改时更新用户,这样您就不必每次请求都访问数据库并减慢所有网站的速度。我的意思是,用户对象多久更改一次?有点,对吧?所以..
    猜你喜欢
    • 2015-07-25
    • 1970-01-01
    • 1970-01-01
    • 2013-08-21
    • 2019-06-23
    • 2021-03-22
    • 1970-01-01
    • 2017-09-30
    • 2021-05-19
    相关资源
    最近更新 更多