【问题标题】:request object in express server does not persist快速服务器中的请求对象不持久
【发布时间】:2025-12-19 23:20:09
【问题描述】:

我正在使用 passportjs(google/facebook 策略)登录。我观察到的是 req.session(来自 express-session)在通过社交渠道(使用序列化用户)登录后使用“passport.user”键更新。这很好。

我所期望的是,如果发出下一个 http 请求,那么 req.session 仍将包含 passport.user 密钥,但这不会发生。所以我不得不通过 mongo-connect 将会话存储在 mongodb 中。现在在 mongo 商店中,我有会话信息。

这是正常行为吗?该 req 对象不会在对同一个快速服务器实例的两个 http 请求之间持续存在吗?因此,每次必须发出新请求时,都必须从 mongo 存储中检索会话。

这就引出了一个问题,如果 req.session 的上述行为是真的,为什么我们需要 deserializeUser ?

【问题讨论】:

    标签: passport.js


    【解决方案1】:

    您是否已将应用设置为使用 Passport 的会话中间件?

    // Configuring Passport
    var passport = require('passport');
    var expressSession = require('express-session');
    
    app.use(session({ secret: 'secret'}));
    app.use(passport.initialize());
    app.use(passport.session());
    

    我正在构建一个网络应用程序并使用护照本地策略。成功通过身份验证后,用户信息将添加到会话中并一直保留,直到从会话中删除(注销期间)。

    【讨论】: