Express应用中的Express会话和Passport会话冲突吗?为什么或为什么不呢?
以下是区分Express和Passport会话对象的一些代码:
app.use(express.session({}));
app.use(passport.session());
app.use(session({
cookie : {
maxAge : 60000
}
}));
答案 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?以获取更多信息。