什么时候应该将 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-parser
和 express-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进行说明)
express4里要单独安装cookie-parser和express-session