Node.js ';会议';和';库克会议';Connect/Express中的中间件?

Node.js ';会议';和';库克会议';Connect/Express中的中间件?,node.js,session,express,connect,middleware,Node.js,Session,Express,Connect,Middleware,Connect/Express捆绑了两个与会话相关的中间件。 有什么区别?我如何选择 我假设中间件与中间件相同,但有一个额外的存储机制。默认情况下,中间件通过内存存储实现通用会话功能。不过,它允许您指定其他存储格式 另一方面,实现了cookie支持的存储(也就是说,整个会话被序列化到cookie中,而不仅仅是会话密钥。它实际上只应在会话数据相对较小时使用。两个中间件都使用客户端cookie来维护用户的上下文ie会话。区别在于: cookies中存储了什么,以及 是否需要服务器端存储 下表比较

Connect/Express捆绑了两个与会话相关的中间件。 有什么区别?我如何选择

我假设中间件与中间件相同,但有一个额外的存储机制。

默认情况下,中间件通过内存存储实现通用会话功能。不过,它允许您指定其他存储格式


另一方面,实现了cookie支持的存储(也就是说,整个会话被序列化到cookie中,而不仅仅是会话密钥。它实际上只应在会话数据相对较小时使用。

两个中间件都使用客户端cookie来维护用户的上下文ie会话。区别在于:

  • cookies中存储了什么,以及
  • 是否需要服务器端存储
下表比较了和wrt会话:

+----------------+-----------------------+----------------------+
||客户端存储|服务器端存储|
||(cookie)|(内存中,db.)|
+----------------+-----------------------+----------------------+
|中间件|已用|内容|已用|内容|
+----------------+--------+--------------+-------+--------------+
|会话|是|会话ID |是|会话数据|
+----------------+--------+--------------+-------+--------------+
|cookie会话|是|会话数据|否|不适用|
+----------------+--------+--------------+-------+--------------+

更简单的是,它不需要任何额外的服务器端存储,即服务器保持完全无状态。需要服务器端存储。默认的基于内存的会话存储的一个明显限制是,当一台服务器有多个实例时,它不工作;另一个共享存储(例如,数据库)通常情况下,会话中间件更常用,因为它更灵活(用于存储敏感数据或更大的有效负载等)

您的两个链接都指向同一个页面,据我所知,它(cookie会话)应仅在会话数据不敏感时使用。假定用户可以检查会话内容,但中间件将检测数据何时被修改。@RyanBales如果会话数据应保持私有,则应使用TLS,但在这种情况下,例如表单数据应保持私有,如w因此,您无论如何都应该使用TLS。默认设置将阻止其他站点读取这些cookie。很难想象您希望向该用户隐藏有关用户会话的信息,但在这种情况下,您可以在存储会话数据之前对其进行加密。