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

gfa*_*ess 49 session middleware connect node.js express

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

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

jma*_*777 52

会议中间件实现通用会话功能与内存中的存储默认.但是,它允许您指定其他存储格式.

cookieSession中间件,而另一方面,实现了饼干支持存储(即整个会话序列化到cookie,而不仅仅是一个会话密钥.它应该在会话数据将保持相对较小真的只能用.

  • 而且,据我所知,它(cookie-session)只应在会话数据不敏感时使用.假设用户可以检查会话的内容,但中间件将检测数据何时被修改. (2认同)

小智 6

两个中间件都使用客户端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     |
+----------------+--------+--------------+-------+--------------+
Run Code Online (Sandbox Code Playgroud)

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