cookie-session 的表达本质上与 JWT 令牌不一样吗?

问题描述

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

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

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

解决方法

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

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

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...