0

在 express 文档中对 express-session 和 cookie-session 进行了区分。那里说:

使用 cookie 可以通过两种主要方式存储用户会话:在服务器上或在客户端上。这个 [cookie-session] 模块将客户端上的会话数据存储在 cookie 中,而像 >express-session 这样的模块仅将客户端上的 >session 标识符存储在 cookie 中,并将会话 > 数据存储在服务器上,通常在>一个数据库。

JWT 令牌不也只是将所有会话数据存储在 cookie 中,JWT 与 cookie-session 模块的区别是什么?

4

1 回答 1

1

express-session 和 cookie-session 之间的主要区别在于它们如何保存 cookie 会话数据。

express-session中间件将会话数据存储在服务器上;它仅将会话 ID 保存在 cookie 本身中,而不是会话数据。默认情况下,它使用内存存储,并且不是为生产环境设计的。在生产中,您需要设置一个可扩展的会话存储,如数据库。

相比之下,cookie-session中间件实现了 cookie 支持的存储:它将整个会话序列化为 cookie,而不仅仅是一个会话密钥。仅当会话数据相对较小且易于编码为原始值(而不是对象)时才使用它。

虽然 JWT 提供了一种在客户端而不是在服务器上维护会话状态的方法,但它只是一个带有有效负载数据的令牌,其中包含用户、创建时间等(不应该是敏感的)。JWT 通常用于授权,通过 Authorization 标头中的不记名令牌发送到服务器。使用 cookie-session 模块时,浏览器会自动将每个请求的 cookie 发送到服务器,但是在发出请求时需要将承载令牌显式添加到 HTTP 标头中。

于 2021-03-28T20:09:04.807 回答