本质上 cookie-session 不是与 JWT 令牌相同吗?

Isn't cookie-session in express essentialy the same as JWT tokens?

在 express 文档中,express-session 和 cookie-session 是有区别的。上面写着:

A user session can be stored in two main ways with cookies: on the server or on the client. This [cookie-session] module stores the session data on the client within a cookie, while a module like >express-session stores only a >session identifier on the client within a cookie and stores the session >data on the server, typically in >a database.

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

express-session 和 cookie-session 之间的主要区别在于它们保存 cookie session 数据的方式。

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

相比之下,cookie-session 中间件实现了 cookie-backed 存储:它将整个 session 序列化到 cookie,而不仅仅是一个 session键。仅在 session 数据相对较小且易于编码为原始值(而非 objects)时才使用它。

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