Express会话与PassportJS会话

问题描述 投票:10回答:1

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

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

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

    app.use(session({
        cookie : {
            maxAge : 60000
        }
    }));
express passport.js
1个回答
16
投票

不,它们是两个不同的东西,它们与其他东西没有冲突。此外,passport.session必须在express.session之后使用才能正常工作。

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.