JWT vs 会话 Cookie:何时使用什么

10 min read
JWT, Security, Authentication

理解差异

JWT 和会话 cookie 都是维护用户身份验证状态的方法,但它们的工作方式不同。

会话 Cookie

工作原理

  • 服务器创建会话并将其存储在内存/数据库中
  • 会话 ID 作为 cookie 发送给客户端
  • 客户端在每个请求中发送 cookie
  • 服务器使用 ID 查找会话数据

优点

  • 可以立即失效
  • 体积较小(仅包含会话 ID)
  • 服务器完全控制

缺点

  • 需要服务器端存储
  • 难以水平扩展
  • 不适合移动应用

JWT 令牌

工作原理

  • 服务器创建并签名令牌
  • 令牌发送给客户端
  • 客户端存储令牌(localStorage、cookie 等)
  • 客户端在每个请求中发送令牌
  • 服务器验证令牌签名

优点

  • 无状态且可扩展
  • 跨不同域工作
  • 移动友好
  • 包含用户信息

缺点

  • 无法在过期前失效
  • 体积较大
  • 如果密钥泄露则易受攻击

何时使用什么?

使用会话 Cookie 的场景:

  • 需要立即撤销
  • 使用传统 Web 应用程序
  • 拥有单体架构
  • 安全性至关重要

使用 JWT 的场景:

  • 构建微服务或分布式系统
  • 需要跨域身份验证
  • 构建移动或单页应用程序
  • 想要减少数据库查找

混合方法

许多现代应用程序使用混合方法:短期 JWT 配合存储为安全 HTTP-only cookie 的刷新令牌。这结合了两种方法的优点。

Share this article

Back to Blog