Express会话与PassportJS会话

时间:2014-11-19 05:58:40

标签: express passport.js

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

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

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

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

1 个答案:

答案 0 :(得分:18)

不,它们是两个独立的东西,它们与其他东西没有冲突。此外,必须在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?以获取更多信息。