JWT 鉴权机制 通俗易懂解释版本

✅ 一句话理解 JWT 鉴权机制

JWT 就像是网站发给你的一张"通行证",你拿着它才能进入特定区域。

这个"通行证"里包含了你的身份信息,还被加密签了名,别人无法伪造。


🔐 什么是 JWT(JSON Web Token)?

JWT 是一种 用户身份验证 的方式,常用于"前后端分离"的系统中。

它长这样(实际是一串很长的字符串):

复制代码
eyJhbGciOi...2ZpbnRlc3QifQ.eyJzdWIiOiIxMjM0NTYifQ.RXo9uFo...

JWT 包含三部分:

复制代码
[头部].[载荷].[签名]
  • 头部 Header:说明用了什么算法
  • 载荷 Payload:包含用户的信息(比如 user_id, 角色)
  • 签名 Signature:把前两部分用密钥加密后生成的,防止被篡改

👨‍🏫 打个比方:公司门禁卡(现实类比)

想象你在公司上班:

  1. 第一次你去前台登记,出示身份证 + 拍照 + 填资料

    → 你登录账号,输入用户名密码

  2. 前台发给你一张门禁卡(JWT Token)

    → 系统生成一个 JWT 给你,里面写了你的身份,比如:

    json 复制代码
    {
      "sub": "user_123",
      "role": "admin",
      "exp": "2025-04-17T00:00:00"
    }
  3. 你每天进公司都刷这张卡

    → 你访问接口时,在请求头里加上这个 token:

    http 复制代码
    Authorization: Bearer eyJhbGciOi...
  4. 保安扫描卡片,验证身份和是否过期

    → 后端用密钥解码 token,验证是否有效


🧪 实际开发流程

  1. 用户第一次登录:

    • 提交用户名和密码
    • 服务器验证通过,生成一个 JWT token 返回给前端
  2. 前端保存 token(一般放在 localStorage 或 cookie)

  3. 之后每次发请求,前端都在请求头加上这个 token:

    http 复制代码
    GET /api/user/profile
    Authorization: Bearer <你的 token>
  4. 后端用密钥解码这个 token,验证:

    • 是否有效?
    • 有没有被篡改?
    • 有没有过期?
    • 用户是谁?
  5. 如果一切正常,放行;否则返回 401 未授权。


🔐 JWT 和传统 Session 的区别(简明对比)

项目 JWT Session
保存位置 前端保存 token 后端保存 session 数据
状态 无状态(Stateless) 有状态(需要记录)
扩展性 高,适合分布式 低,难于扩展
安全性 被窃取就失效 可随时强制失效
示例场景 前后端分离项目 传统服务端渲染项目

💡 举个开发中常见的 JWT 用法例子:

python 复制代码
# 登录时
POST /api/login
{
  "username": "alice",
  "password": "123456"
}
=> 返回 token:
"eyJhbGciOi..."

# 获取用户信息
GET /api/user/me
Headers:
Authorization: Bearer eyJhbGciOi...

后端流程:
  → 解码 token 得到用户 ID
  → 查询数据库,返回用户信息

✅ 总结一张图搞懂 JWT 鉴权流程:

复制代码
[用户登录] → [服务端验证密码] → [生成 JWT token] → [返回给前端]

[之后请求]:
  前端发送 token → 后端验证 token 是否有效 → 决定是否放行
相关推荐
弹简特4 天前
【JavaEE34-博客系统案例实战】从零开始撸一个博客系统(二):登录 + JWT令牌 + 强制登录,让系统先有“门卫”
jwt·博客系统·java实战
indexsunny5 天前
互联网大厂Java面试实录:Spring Boot到微服务的深入探讨
java·spring boot·微服务·面试·eureka·kafka·jwt
弹简特5 天前
【JavaEE】JWT令牌:签名、密钥、生成令牌、校验令牌、编码、解码,一篇文章彻底讲透
jwt·密钥
庞轩px9 天前
JWT与Session比较
jwt·session·登录鉴权·无状态
庞轩px10 天前
JWT + Redis 双 Token 机制:从原理到实战
数据库·redis·缓存·jwt·token·登录认证
带娃的IT创业者10 天前
WeClaw_43_双重认证与Token自动刷新:Device Fingerprint与JWT安全机制
jwt·认证机制·双重认证·设备指纹·token刷新·http安全
૮・ﻌ・25 天前
Node.js - 04:MongoDB、会话控制
数据库·mongodb·node.js·jwt·token·cookie·session
indexsunny25 天前
互联网大厂Java面试实战:从Spring Boot到微服务架构的音视频场景解析
java·spring boot·spring cloud·mybatis·spring security·jwt·flyway
没有bug.的程序员25 天前
撕裂微服务网关的认证风暴:Spring Security 6.1 与 JWT 物理级免登架构大重构
java·spring·微服务·架构·security·jwt
独断万古他化1 个月前
【抽奖系统开发实战】Spring Boot 项目的用户模块设计:注册登录、权限管控与敏感数据加密
java·spring boot·redis·后端·mvc·jwt·拦截器