【发布时间】:2013-03-22 14:43:03
【问题描述】:
有两个与会话相关的中间件与 Connect/Express 捆绑在一起。 有什么区别?我该如何选择?
我假设session 中间件与cookieSession 中间件相同,但具有额外的存储机制。
【问题讨论】:
-
您的两个链接都指向同一个页面
标签: node.js session express connect middleware
有两个与会话相关的中间件与 Connect/Express 捆绑在一起。 有什么区别?我该如何选择?
我假设session 中间件与cookieSession 中间件相同,但具有额外的存储机制。
【问题讨论】:
标签: node.js session express connect middleware
session middleware 默认使用 in-memory 存储实现通用会话功能。不过,它允许您指定其他存储格式。
另一方面,cookieSession middleware 实现 cookie-backed 存储(也就是说,整个会话被序列化为 cookie,而不仅仅是一个会话密钥。它应该只是当会话数据将保持相对较小时使用。
【讨论】:
两个中间件都使用客户端cookie 来维护用户的上下文,即Session。区别在于:
下表比较了cookieSession middleware 和session middleware wrt 会话:
+----------------+-----------------------+----------------------+
| | Client-side store | Server-side store |
| | (cookie) | (in-memory, db ..) |
+----------------+-----------------------+----------------------+
| Middleware | Used? | Content | Used? | Content |
+----------------+--------+--------------+-------+--------------+
| session | Yes | Session ID | Yes | Session data |
+----------------+--------+--------------+-------+--------------+
| cookie-session | Yes | Session data | No | N/A |
+----------------+--------+--------------+-------+--------------+
cookieSession middleware 更简单,因为它不需要任何额外的服务器端存储,即服务器保持完全无状态。 session middleware 需要服务器端存储。默认的基于内存的会话存储的一个明显限制是它在有多个服务器实例时不起作用。在这种情况下,将需要一个替代的共享存储(例如,数据库),这使得它相对复杂。但总的来说,会话中间件更常用,因为它更灵活(用于存储敏感数据或更大的有效负载等)
【讨论】: