JWT、Cookie 与 Session 对比学习
基本概念
-
会话技术
-
会话:用户打开浏览器,访问 Web 服务器的资源时,建立的会话从建立到断开连接的整个过程。
-
会话跟踪:一种维持浏览器状态的方法,服务端需要识别多次请求是否来自同一用户,以便在同一次会话的多次请求中共享数据。
-
-
会话跟踪方案
-
客户端会话跟踪技术:Cookie
-
服务端会话跟踪技术:Session
-
基于令牌的会话技术:JWT
-
Cookie
原理
-
Cookie 是由浏览器存储的小型数据文件,通过 HTTP 协议在浏览器和服务器之间传递。
-
流程:
-
服务端在响应头中添加
Set-Cookie
,通知浏览器保存 Cookie。 -
浏览器在后续请求中自动携带 Cookie,存储在请求头的
Cookie
字段中。
-
优缺点
-
优点:
-
Cookie 是 HTTP 协议中支持的技术。
-
-
缺点:
-
移动端 APP 无法使用 Cookie。
-
不安全,用户可以禁用 Cookie 或自行修改内容。
-
Cookie 不能跨域。
-
Session
原理
-
Session 是一种服务端存储用户会话信息的技术。
-
流程:
-
浏览器第一次请求服务时,服务端创建会话并生成
JSESSIONID
,通过Set-Cookie
返回给客户端。 -
客户端在后续请求中携带
JSESSIONID
,服务端通过该 ID 查询会话数据。
-
优缺点
-
优点:
-
会话信息存储在服务端,安全性更高。
-
-
缺点:
-
在服务器集群环境下,需要共享 Session 数据或使用其他策略。
-
依赖于 Cookie 的缺点。
-
JWT(JSON Web Token)
组成
JWT 令牌由三部分组成:
-
Header(头部):记录令牌类型和签名算法,如
{ "alg": "HS256", "type": "JWT" }
。 -
Payload(载荷):存储自定义信息,如
{ "id": "1", "username": "Tom" }
。 -
Signature(签名):用于验证令牌完整性,确保未被篡改。签名由 Header 和 Payload 通过密钥生成。
原理
-
JWT 是一种基于 JSON 的令牌认证机制。
-
流程:
-
用户登录成功后,服务端生成一个 JWT,返回给客户端。
-
客户端在后续请求中携带该 JWT(通常在
Authorization
或Cookie
字段)。 -
服务端验证 JWT 签名与有效性,无需存储用户会话。
-
优缺点
-
优点:
-
支持跨平台(如 PC 端、移动端)。
-
适合分布式系统,解决服务器集群环境下的认证问题。
-
减轻服务端存储压力。
-
-
缺点:
-
JWT 是无状态的,无法在服务端主动销毁令牌(如注销)。
-
编写起来比较麻烦
-
原文地址:https://blog.csdn.net/zzb1580/article/details/144224431
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!