当前位置: 首页 > news >正文

JWT通俗易懂讲解

1. 什么是 JWT?

JWT 就像一个快递单号

  • 你登录后,系统给你生成一个“快递单号”(JWT token)。
  • 你以后再访问接口,不需要每次都带身份证(用户名+密码),只要报出这个单号,系统一查就知道“哦,这个是你”。

2. JWT 长啥样?

JWT 是一个字符串,大概长这样:

aaaaa.bbbbb.ccccc

分三部分:

  1. Header(头部):说明“这个快递单号是啥规则生成的”

    • 比如用的 HS256 签名算法。
  2. Payload(负载):存放信息(像快递单上的收件人信息)

    • 用户 ID、用户名、过期时间等等。
    • ⚠️ 注意:这里是明文(Base64编码),谁都能看到,所以不能放密码这种敏感信息。
  3. Signature(签名):防伪标记

    • 系统用一个“秘密钥匙(secret key)”加密前两部分,生成一个签名。
    • 就像快递单上的防伪章,别人伪造不了。

3. JWT 工作流程

举个例子:

  1. 用户登录

    • 用户输入账号密码。

    • 后端验证成功后,生成 JWT:

      • header 写算法信息
      • payload 写用户 ID + 有效期
      • signature 用 secret key 签名
    • 最后拼成一个长字符串,返回给前端。

  2. 前端存储

    • 前端把这个 token 存起来(一般放在 CookielocalStorage)。
  3. 访问接口

    • 前端请求接口时,把 JWT 放在 Authorization: Bearer <token> 头里。

    • 后端拿到 token,分三步:

      • 解码 header + payload。
      • 用同样的 secret key 重新算一遍签名。
      • 比对签名,确认 token 没被篡改。
    • 如果没过期 && 签名正确 → 请求合法,返回数据。


4. 为什么 JWT 好用?

  • 无状态:后端不用保存 session 信息(不像传统 session 存在服务器内存里),只要有 token 就能验证。
  • 可扩展:多服务共享一个 secret key,就都能验证同一个 JWT,适合分布式系统。

5. 类比总结

  • 用户名+密码 = 身份证,要经常验证,很麻烦。
  • Session = 饭店给你的小票,只有在这家饭店能用(后端保存 session 表)。
  • JWT = 全国通用的“快递单号”,谁都能查真伪,但没人能伪造。

好,我给你画一个JWT 登录 + 校验的交互流程图,这样你一看就懂啦 🚀


JWT 工作流程图

客户端(浏览器/APP)服务器(后端API)1. 登录请求 (账号+密码)2. 验证账号密码是否正确3. 生成JWT (Header+Payload+Signature)4. 返回JWT Token5. 前端保存JWT (Cookie/LocalStorage)返回错误信息alt[验证成功][验证失败]6. 携带JWT请求接口 (Authorization: Bearer xxx)7. 校验Token (解码+检查签名+过期时间)8. 返回数据返回401未授权alt[Token有效][Token无效/过期]客户端(浏览器/APP)服务器(后端API)

能直观看到:

  • JWT 在登录时生成
  • 客户端保存它
  • 以后请求都带着它
  • 服务器只需要验证,不用存 session
http://www.lryc.cn/news/625436.html

相关文章:

  • 什么是强化学习
  • 【图像算法 - 18】慧眼辨良莠:基于深度学习与OpenCV的麦田杂草智能识别检测系统(附完整代码)
  • 从 SGD 到梯度累积:Epoch、Batch、Step 的关系全解析
  • 边缘智能体:Go编译在医疗IoT设备端运行轻量AI模型(上)
  • Ansible 角色管理指南
  • Ansible 角色管理
  • Apache IoTDB(4):深度解析时序数据库 IoTDB 在Kubernetes 集群中的部署与实践指南
  • Redisson 分布式锁核心机制解析
  • 2025年09月计算机二级MySQL选择题每日一练——第一期
  • 寻找旋转排序数组中的最小值
  • 【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day7
  • web开发,在线%服装商城开发demo,基于html,css,jquery,asp.net,webform,sqlserver数据库
  • hadoop技术栈(九)Hbase替代方案
  • 20250819 强连通分量,边双总结
  • k8s运维实践:高可用Redis Cluster(三主三从)与Proxy部署方案
  • RadioIrqProcess函数详细分析与流程图
  • 【实时Linux实战系列】基于实时Linux的物联网系统设计
  • “道法术器” 思维:解析华为数字化转型
  • 企业知识管理革命:RAG系统在大型组织中的落地实践
  • 服务器如何隐藏端口才能不被扫描?
  • 08.19总结
  • 17.web api 8
  • C++ 默认参数深度解析【C++每日一学】
  • 0.开篇简介
  • 把 AI 天气预报塞进「打火机」——基于时空扩散模型的微型气象站
  • 项目管理.管理理念学习
  • 推理还是训练 || KV缓存和CoT技术
  • Orange的运维学习日记--46.Ansible进阶之LNMP部署最佳实践
  • 鱼骨图图片制作全指南:使用工具推荐 + 行业案例
  • 叉车结构设计cad+三维图+设计说明书