自学内容网 自学内容网

JWT、Cookie 与 Session 对比学习

基本概念

  1. 会话技术

    • 会话:用户打开浏览器,访问 Web 服务器的资源时,建立的会话从建立到断开连接的整个过程。

    • 会话跟踪:一种维持浏览器状态的方法,服务端需要识别多次请求是否来自同一用户,以便在同一次会话的多次请求中共享数据。

  2. 会话跟踪方案

    • 客户端会话跟踪技术:Cookie

    • 服务端会话跟踪技术:Session

    • 基于令牌的会话技术:JWT

Cookie

原理

  • Cookie 是由浏览器存储的小型数据文件,通过 HTTP 协议在浏览器和服务器之间传递。

  • 流程

    1. 服务端在响应头中添加 Set-Cookie,通知浏览器保存 Cookie。

    2. 浏览器在后续请求中自动携带 Cookie,存储在请求头的 Cookie 字段中。

优缺点

  • 优点

    • Cookie 是 HTTP 协议中支持的技术。

  • 缺点

    • 移动端 APP 无法使用 Cookie。

    • 不安全,用户可以禁用 Cookie 或自行修改内容。

    • Cookie 不能跨域。

Session

原理

  • Session 是一种服务端存储用户会话信息的技术。

  • 流程

    1. 浏览器第一次请求服务时,服务端创建会话并生成 JSESSIONID,通过 Set-Cookie 返回给客户端。

    2. 客户端在后续请求中携带 JSESSIONID,服务端通过该 ID 查询会话数据。

优缺点

  • 优点

    • 会话信息存储在服务端,安全性更高。

  • 缺点

    • 在服务器集群环境下,需要共享 Session 数据或使用其他策略。

    • 依赖于 Cookie 的缺点。

JWT(JSON Web Token)

组成

JWT 令牌由三部分组成:

  1. Header(头部):记录令牌类型和签名算法,如 { "alg": "HS256", "type": "JWT" }

  2. Payload(载荷):存储自定义信息,如 { "id": "1", "username": "Tom" }

  3. Signature(签名):用于验证令牌完整性,确保未被篡改。签名由 Header 和 Payload 通过密钥生成。

原理

  • JWT 是一种基于 JSON 的令牌认证机制。

  • 流程

    1. 用户登录成功后,服务端生成一个 JWT,返回给客户端。

    2. 客户端在后续请求中携带该 JWT(通常在 AuthorizationCookie 字段)。

    3. 服务端验证 JWT 签名与有效性,无需存储用户会话。

优缺点

  • 优点

    • 支持跨平台(如 PC 端、移动端)。

    • 适合分布式系统,解决服务器集群环境下的认证问题。

    • 减轻服务端存储压力。

  • 缺点

    • JWT 是无状态的,无法在服务端主动销毁令牌(如注销)。

    • 编写起来比较麻烦


原文地址:https://blog.csdn.net/zzb1580/article/details/144224431

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!