Express应用程序中的Express会话和Passport会话冲突吗?为什么或者为什么不?
以下是一些区分Express和Passport会话对象的代码:
app.use(express.session({}));
app.use(passport.session());
app.use(session({
cookie : {
maxAge : 60000
}
}));
不,它们是两个不同的东西,它们与其他东西没有冲突。此外,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?获取更多信息。