什么时候应该将 cookie-parser 与 express-session 一起使用?

Posted

技术标签:

【中文标题】什么时候应该将 cookie-parser 与 express-session 一起使用?【英文标题】:when should I use cookie-parser with express-session? 【发布时间】:2015-03-13 17:19:00 【问题描述】:

在大多数 ExpressJs 示例中,我发现使用 cookie-parserexpress-session

如果没有req.session.name 可以访问会话数据,在什么情况下(或好处)我应该使用cookie-parser

【问题讨论】:

【参考方案1】:

对于未来不起眼的编码人员,他们会偶然发现这一点 - 我发布了一个最新的答案:

正如express-session中间件的官方描述在这里所说:express-session

从 1.5.0 版本开始,cookie-parser 中间件不再需要 用于此模块工作。该模块现在直接读取和 在 req/res 上写入 cookie。使用 cookie-parser 可能会导致问题,如果 这个模块和cookie-parser的秘密不一样。

因此,只需使用 express-session 中间件,祝您有美好的一天。

【讨论】:

根据 Express 自己的安全准则,express-session 尚未准备好生产,不应使用:expressjs.com/en/advanced/… @ViggoV 我想你的意思是这条线By default, it uses in-memory storage and is not designed for a production environment ?它不是说整个express-session 没有准备好生产,而是关于不使用默认的内存存储进行生产,连同express-session,您应该使用与您的数据库兼容的会话存储来进行持久性cookie 存储,一切都会好起来的. 所以cookie-parser不能和express-session一起使用?如果我需要读取 cookie 和维护会话数据怎么办? @Benny 不知道他们是否会发生冲突。就我个人而言,我会检查是否有会话读取 api/parsed cookies 暴露在 express-session 上。 @Benny 来自 express-session 主页,听起来它们只会在两个模块之间的秘密不同时才会发生冲突 - “如果秘密不是此模块和 cookie-parser 相同”【参考方案2】:

除了提供简单的 cookie 解析功能外,cookie-parser 中间件还使用可选的 secret 属性启用其他中间件组件可以引用的签名 cookie。

为什么要签名 cookie? This question addresses that well

【讨论】:

github.com/expressjs/session 的文档似乎表明它自己支持签名的 cookie。我错过了什么吗?

以上是关于什么时候应该将 cookie-parser 与 express-session 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

Cookie-Parser是怎样解析签名后的cookie的(同一时候对cookie和cookie-signature进行说明)

cookie-parser中间件的使用

express中cookie-parser的简单使用

express4里要单独安装cookie-parser和express-session

什么时候应该使用 RequestFactory 与 GWT-RPC?

仍然需要使用带有 passport.js 的 cookie-parser 吗?