忘掉那些晦涩的技术术语,让我们用一个生活中人人都懂的例子——健身房会员卡,来彻底理解 JWT 的工作原理。
一、从生活中的会员卡说起
首先,想象一下你去健身房办卡的场景
想象一下,你去一家健身房办了一张会员卡,整个流程是这样的:
1. 前台验证(身份认证)
你走到前台,出示你的身份证(证明你是你)和付款凭证。前台确认你的信息无误。
2. 发卡(颁发凭证)
前台给你制作一张会员卡。这张卡上印着:
- 卡头:写明这是"XX健身房"的卡,使用的加密技术是"盖章"
- 卡信息:你的名字、会员等级(金卡)、办卡日期、有效期
- 防伪印章:前台用一个只有健身房知道的"秘制印章"在卡片上盖了个章,防止别人伪造
3. 使用会员卡(凭证访问)
之后你每次去健身房,都不用再带身份证和付款单了。你只需要出示这张会员卡:
- 门卫一看卡是"XX健身房"的,再看一下卡上的防伪印章,确认是真的,就让你进去了
- 教练看到你是"金卡"会员,就会为你提供更高级的服务
二、将会员卡映射到 JWT
JWT 就是互联网世界的"数字会员卡"
JWT(JSON Web Token)就是互联网世界里的那张"数字会员卡"。让我们看看它是如何工作的:
JWT 的完整工作流程
1. 登录验证(前台验证)
你用用户名和密码登录一个网站(比如淘宝)。
2. 颁发 Token(发卡)
网站服务器确认你的信息正确后,会生成一个 JWT 并发送给你的浏览器。
这个 JWT 就像一张会员卡,它由三部分组成,用点 . 分隔:
xxxxx.yyyyy.zzzzz
JWT 的三部分组成
Header(头部)→ 相当于卡头
它告诉你这是一个 JWT,以及使用的签名算法(比如 HMAC SHA256)。这部分是 Base64 编码的。
Payload(有效载荷)→ 相当于卡信息
这里存放着真正的信息,比如你的用户ID、用户名、令牌签发时间和过期时间。
⚠️ 重要提示:这部分信息是可见的,只是做了编码,不要存放密码等敏感信息!
Signature(签名)→ 相当于防伪印章
这是最核心的安全部分。服务器把前面的 Header 和 Payload,加上一个只有服务器自己才知道的 密钥(Secret),通过声明的算法(比如 HMAC SHA256)计算一下,生成一个签名。
这个签名的妙处在于: 只要 Header 或 Payload 中的任何一个小字符被篡改了,整个签名就会对不上。服务器一检查就能发现是假卡。
JWT 的验证流程
3. 携带 Token 访问(使用会员卡)
之后你访问网站的其他页面(比如"我的订单"),浏览器都会在请求头里自动带上这个 JWT。
4. 验证 Token(门卫检查)
网站的服务器接收到请求后:
- 取出 JWT
- 用同样的密钥和算法,对收到的
Header.Payload部分再计算一次签名 - 把自己计算出来的签名和 JWT 自带的
Signature部分进行对比 - 如果一样:说明卡是真的,信息也没被篡改,并且检查一下卡(Payload)是否在有效期内。验证通过后,就从 Payload 里取出你的用户ID,知道是你在访问,然后返回"我的订单"数据
- 如果不一样:或者过期了,就立刻拒绝请求,让你重新登录
三、JWT 的优势
为什么要使用 JWT?
1. 无状态(Stateless)
服务器不需要在内存或数据库里记录谁已经登录了(传统的 Session 方式需要)。服务器只需要验证 JWT 的签名是否有效即可。这让服务器更容易扩展。
2. 跨域支持
非常适合用于前后端分离的项目(前端在 a 域名,API 服务器在 b 域名)或者单页面应用(SPA)。
3. 多端支持
同样一个用户,可以在手机 App、网页、小程序上同时登录,服务器都能通过验证同一个 JWT 来识别用户身份。
四、核心概念总结
| 核心概念 | 说明 |
|---|---|
| 本质 | JWT 是一张数字身份证,是客户端的凭证 |
| 安全核心 | 依赖于 Signature(签名),需要服务器的密钥(Secret)才能生成和验证 |
| 信息透明性 | Payload 里的信息是透明的、可解码的,但不可篡改。所以不要在里面存密码 |
| 工作流程 | 登录拿卡 → 带卡访问 → 服务器验卡 |
五、实战示例
一个真实的 JWT 长什么样?
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
想要亲自体验?
你可以访问 https://jwt.io 这个网站,把上面的 Token 贴进去,就能直观地看到它解码后的 Header 和 Payload 内容。
现在,你是不是已经完全明白 JWT 是什么以及怎么工作的了?
它其实就是一张需要自己保管好的、带有防伪印章的会员卡!

被折叠的 条评论
为什么被折叠?



