【问题标题】:Express session vs. PassportJS sessionExpress 会话与 PassportJS 会话
【发布时间】:2015-01-16 13:37:54
【问题描述】:

Express 应用程序中的 Express 会话和 Passport 会话是否冲突?为什么或为什么不?

下面是一些区分 Express 和 Passport 会话对象的代码:

    app.use(express.session({}));
    app.use(passport.session());

    app.use(session({
        cookie : {
            maxAge : 60000
        }
    }));

【问题讨论】:

    标签: express passport.js


    【解决方案1】:

    不,它们是两个独立的东西,它们不冲突。而且passport.session必须在express.session之后使用才能正常工作。

    express.session 中间件用于从数据存储(如 Redis)中检索用户会话。我们可以找到会话对象,因为会话 ID 存储在 cookie 中,该 cookie 随每个请求提供给服务器。

    然后,passport.session 中间件的目的是使用passport.deserializeUser 函数(您在护照配置中定义)从会话中反序列化用户对象。当用户首次对自己进行身份验证时,其用户对象被序列化并存储在会话中。在每个后续请求中,中间件都会反序列化用户并填充 req.user 对象。

    查看Passpot Configure Guide 和这个 SO 答案:What does passport.session() middleware do? 了解更多信息。

    【讨论】:

    • 在不使用 express-session 的情况下 passort-session 可以工作吗?
    猜你喜欢
    • 2016-04-14
    • 2014-04-06
    • 2016-10-14
    • 2017-10-30
    • 2015-11-25
    • 2021-02-20
    • 2012-05-15
    • 1970-01-01
    • 2011-01-01
    相关资源
    最近更新 更多