目录

JWT 鉴权

核心

特点

优点:

优先选 JWT 的场景

Session-Cookie 鉴权

核心

核心流程

特点

优点:

优先选 Session-Cookie 的场景


JWT 鉴权

核心

核心是把用户身份、权限等信息加密后存储在 Token 中,服务器无需存储 Token,仅通过加密算法验证 Token 的真伪和有效性,实现 “无状态鉴权”。

特点

  • 服务器不存储 Token
  • 客户端存储 Token
  • 无状态,任意节点可验证
  • Token 内可携带少量用户信息
  • 仅需解密验证,无需查询数据库

优点:

  • Token 随请求头 / 请求体传递,无 Cookie 跨域限制
  • 任意节点可验证
  • Token 内可携带少量用户信息

优先选 JWT 的场景

  • 前后端分离项目、APP 接口、跨域应用;
  • 分布式 / 微服务架构(无需 Session 共享,降低服务器压力);
  • 需在 Token 中携带少量用户信息(如角色),减少数据库查询。

Session-Cookie 鉴权

服务器存储用户会话(SessionID),客户端存 Cookie

核心

核心是 “服务器存身份、客户端带凭证”

核心流程

  1. 登录阶段
    • 客户端提交账号密码 → 服务器验证通过;
    • 服务器创建Session(存储用户 ID、角色、登录时间等),生成唯一SessionID
    • 服务器通过Set-Cookie响应头,将SessionID写入客户端 Cookie。
  2. 鉴权阶段
    • 客户端后续请求自动携带 Cookie(浏览器默认行为);
    • 服务器从 Cookie 中提取SessionID,查询对应的 Session 信息;
    • 验证 Session 有效性(是否过期、是否存在),验证通过则允许访问。
  3. 登出阶段
    • 服务器删除对应的 Session 数据;
    • 客户端清除存储 SessionID 的 Cookie。

特点

  • 服务器需存储 Session
  • 需配置 CORS+Cookie 跨域
  • 仅携带 SessionID,用户信息存在服务器
  • 每次请求需查询服务器 Session
  • 适合分布式 / 前后端分离项目

优点:

  • Token 随请求头 / 请求体传递,无 Co
  • 适合单体 Web 项目
  • Cookie 由浏览器自动携带,前端无需额外处理
  • 可直接删除服务器端 Session,实现 “立即登出”,安全性高

  • 优先选 Session-Cookie 的场景

  • 传统单体 Web 项目(同域),无需跨域 / 分布式部署;
  • 对 “主动注销登录” 要求高(如金融、后台管理系统);
  • 需防范 XSS 攻击(Cookie 设置 HttpOnly 比 LocalStorage 更安全)。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐