Express 会话与 PassportJS 会话
Posted
技术标签:
【中文标题】Express 会话与 PassportJS 会话【英文标题】:Express session vs. PassportJS session 【发布时间】: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
));
【问题讨论】:
【参考方案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 可以工作吗?以上是关于Express 会话与 PassportJS 会话的主要内容,如果未能解决你的问题,请参考以下文章
如何使passportjs google login oauth与JWT一起使用,而不是通过序列化/反序列化方法创建会话?