JWT 和 Session-Cookie 两种鉴权
·
目录
JWT 鉴权
核心
核心是把用户身份、权限等信息加密后存储在 Token 中,服务器无需存储 Token,仅通过加密算法验证 Token 的真伪和有效性,实现 “无状态鉴权”。
特点
- 服务器不存储 Token
- 客户端存储 Token
- 无状态,任意节点可验证
- Token 内可携带少量用户信息
- 仅需解密验证,无需查询数据库
优点:
- Token 随请求头 / 请求体传递,无 Cookie 跨域限制
- 任意节点可验证
- Token 内可携带少量用户信息
优先选 JWT 的场景
- 前后端分离项目、APP 接口、跨域应用;
- 分布式 / 微服务架构(无需 Session 共享,降低服务器压力);
- 需在 Token 中携带少量用户信息(如角色),减少数据库查询。
Session-Cookie 鉴权
服务器存储用户会话(SessionID),客户端存 Cookie
核心
核心是 “服务器存身份、客户端带凭证”
核心流程
- 登录阶段:
- 客户端提交账号密码 → 服务器验证通过;
- 服务器创建Session(存储用户 ID、角色、登录时间等),生成唯一
SessionID; - 服务器通过
Set-Cookie响应头,将SessionID写入客户端 Cookie。
- 鉴权阶段:
- 客户端后续请求自动携带 Cookie(浏览器默认行为);
- 服务器从 Cookie 中提取
SessionID,查询对应的 Session 信息; - 验证 Session 有效性(是否过期、是否存在),验证通过则允许访问。
- 登出阶段:
- 服务器删除对应的 Session 数据;
- 客户端清除存储 SessionID 的 Cookie。
特点
- 服务器需存储 Session
- 需配置 CORS+Cookie 跨域
- 仅携带 SessionID,用户信息存在服务器
- 每次请求需查询服务器 Session
- 适合分布式 / 前后端分离项目
优点:
- Token 随请求头 / 请求体传递,无 Co
- 适合单体 Web 项目
- Cookie 由浏览器自动携带,前端无需额外处理
- 可直接删除服务器端 Session,实现 “立即登出”,安全性高
-
优先选 Session-Cookie 的场景
- 传统单体 Web 项目(同域),无需跨域 / 分布式部署;
- 对 “主动注销登录” 要求高(如金融、后台管理系统);
- 需防范 XSS 攻击(Cookie 设置 HttpOnly 比 LocalStorage 更安全)。
更多推荐



所有评论(0)