Connect/Express 捆绑了两个与会话相关的中间件。有什么不同?我该如何选择?
我假设会话中间件与cookieSession中间件相同,但具有额外的存储机制。
Connect/Express 捆绑了两个与会话相关的中间件。有什么不同?我该如何选择?
我假设会话中间件与cookieSession中间件相同,但具有额外的存储机制。
两个中间件都使用客户端 cookie 来维护用户的上下文,即Session。区别在于:
下表比较了 cookieSession 中间件和会话中间件wrt Sessions:
+----------------+-----------------------+----------------------+
| | 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 中间件更简单,因为它不需要任何额外的服务器端存储,即服务器保持完全无状态。会话中间件需要服务器端存储。默认的基于内存的会话存储的一个明显限制是它在有多个服务器实例时不起作用。在这种情况下,将需要一个替代的共享存储(例如,数据库),这使得它相对复杂。但总的来说,会话中间件更常用,因为它更灵活(用于存储敏感数据或更大的有效负载等)