身份验证工作原理:JWT 与会话对比解析
发布: (2026年3月10日 GMT+8 15:50)
3 分钟阅读
原文: Dev.to
Source: Dev.to
什么是身份验证?
身份验证是指在授予用户访问系统的权限之前,验证其身份的过程。
例如,当用户登录网站时:
- 用户输入凭证(电子邮件/密码)
- 服务器验证这些凭证
- 服务器创建一种方式来记住用户的身份,以便后续请求使用
第三步就是会话(session)或 JWT 令牌发挥作用的地方。
基于会话的身份验证
会话的工作原理
当用户登录时:
- 用户向服务器发送登录凭证。
- 服务器验证凭证。
- 服务器在服务器端创建会话。
- 会话 ID 作为 Cookie 返回给浏览器。
- 浏览器在每次请求时都携带此 Cookie。
服务器随后检查会话 ID,以确定用户是否已通过身份验证。
会话身份验证的优势
- 实现简单
- 易于撤销会话
- 使用 HTTP‑only Cookie 时更安全
- 框架支持良好
限制
- 会话需要服务器端存储
- 在分布式系统中更难扩展
- 需要在服务器之间同步会话
JWT 身份验证
JWT(JSON Web Token)身份验证在现代 API、微服务和移动应用中被广泛使用。
与在服务器上存储会话数据不同,JWT 将身份验证信息直接存放在令牌本身中。
什么是 JWT?
JWT 是一种紧凑且安全的令牌,用于在客户端和服务器之间传输信息。
典型的 JWT 包含三个部分:
- Header(头部) – 描述令牌类型和签名算法。
- Payload(负载) – 包含声明(例如用户 ID、过期时间)。
- Signature(签名) – 验证令牌未被篡改。