794 字
约 2 分钟
0
JWT 无状态身份验证入门

JWT 无状态身份验证入门

JWT,全称:

JSON Web Token

它常用于:

前后端分离
微服务
API 身份认证

核心思想:

用户登录成功后,服务器生成一个 Token,之后客户端每次请求都携带 Token,服务器验证 Token 就知道当前用户是谁。


1. 为什么叫“无状态”?

传统 Session:

用户登录
  ↓
服务器保存 Session
  ↓
客户端保存 sessionId
  ↓
每次请求通过 sessionId 查 Session

服务器需要保存登录状态。

JWT:

用户登录
  ↓
服务器生成 JWT
  ↓
客户端保存 JWT
  ↓
每次请求携带 JWT
  ↓
服务器直接验证 JWT

服务器不需要保存传统 Session。

所以叫:

Stateless Authentication
无状态认证

2. JWT 长什么样?

JWT 一般由三部分组成:

Header.Payload.Signature

例如:

xxxxx.yyyyy.zzzzz

其中:

Header
→ 算法等信息

Payload
→ 用户信息、过期时间等

Signature
→ 防止 Token 被篡改

Payload 可能包含:

{
  "userId": 1001,
  "role": "admin",
  "exp": 1780000000
}

注意:

JWT 默认是编码,不是加密,不要在 Payload 中保存密码等敏感信息。


3. JWT 登录流程

用户名 + 密码
      ↓
   登录接口
      ↓
   验证成功
      ↓
   生成 JWT
      ↓
   返回客户端

之后请求:

GET /orders

Authorization:
Bearer <JWT>

服务器:

JWT
 ↓
验证签名
 ↓
检查是否过期
 ↓
获取 userId
 ↓
执行业务

4. JWT 为什么适合微服务?

假设有:

User Service
Order Service
Payment Service

客户端每次都携带 JWT:

         JWT
          ↓
      API Gateway
      /    |    \
     ↓     ↓     ↓
   User  Order Payment

不同服务只需要能够验证 Token,就能获取当前用户身份。

因此非常适合:

前后端分离
微服务
移动端 API
分布式系统

5. JWT 的问题

JWT 也不是没有缺点。

最大的一个问题是:

Token 发出去以后
在过期之前不好立即撤销

例如:

Access Token 有效期 30 分钟

用户退出登录后,如果 Token 已经泄露,理论上仍可能继续使用。

因此生产环境常见方案:

短期 Access Token
+
Refresh Token

或者:

Redis Token 黑名单

6. JWT 和 Session 的区别

Session JWT
服务端保存状态 客户端携带状态
需要 Session 存储 通常不需要
单体项目很常见 前后端分离、微服务常见
容易主动失效 主动失效相对麻烦

7. 总结

JWT 可以简单理解成:

登录成功
  ↓
服务器签发 JWT
  ↓
客户端保存
  ↓
每次请求携带 JWT
  ↓
服务器验证 JWT
  ↓
确认用户身份

一句话总结:

JWT 无状态身份验证,就是让客户端携带一张带签名的“身份凭证”,服务器无需维护传统 Session,也能确认用户是谁。

JWT 无状态身份验证入门
http://www.clxhxhhr.top/posts/565/
作者
clxstart
发布于
2026-09-11
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。