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