Connect / Express中'session'和'cookieSession'中间件有什么区别?

Connect / Express捆绑了两个会话相关的中间件。 有什么不同? 我该如何select?

我假设会话中间件与cookieSession中间件相同,但具有额外的存储机制。

会话中间件默认使用内存存储实现通用会话function。 它允许你指定其他的存储格式。

另一方面, cookieSession中间件实现了cookie支持的存储(即整个会话被序列化为cookie,而不仅仅是一个会话密钥),只有在会话数据保持相对较小的情况下才能使用。

这两个中间件都使用客户端cookie来维护用户的上下文,即Session 。 区别在于:

  • 什么被存储在cookie中,并且
  • 是否需要服务器端存储

下表比较了CookieSession中间件和会话中间件和会话:

+----------------+-----------------------+----------------------+ | | 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中间件 更简单 ,因为它不需要任何额外的服务器端存储,即服务器保持完全无状态。 会话中间件需要一个服务器端存储。 默认的基于内存的会话存储的一个明显的限制是,当有多个服务器实例时,它不起作用; 在这种情况下将需要另外的共享存储器(例如数据库),这使得它相对复杂。 一般来说,会话​​中间件更常用,因为它更灵活(用于存储敏感数据或更大的有效载荷等)。