当前位置: 代码网 > it编程>编程语言>Java > JWT在SpringBoot3中的作用及说明

JWT在SpringBoot3中的作用及说明

2025年12月24日 Java 我要评论
一、jwt 是什么?(生活类比)jwt 就像是一个"电子身份证"或者"入场手环"。想象一下:去游乐园玩:你在入口处买票后,工作人员给你一个彩色手环这个手环上印着

一、jwt 是什么?(生活类比)

jwt 就像是一个 "电子身份证" 或者 "入场手环"。想象一下:

去游乐园玩

  • 你在入口处买票后,工作人员给你一个 彩色手环
  • 这个手环上印着你的名字、入园时间、有效期
  • 手环是防水的,很难伪造
  • 你进入园内后,所有游乐设施都通过这个手环确认你的身份和权限
  • 你不需要每次都出示门票,也不需要重新排队验证身份

参加会议

  • 你注册会议后,收到一个 电子胸牌
  • 胸牌上有你的照片、姓名、公司、会议场次权限
  • 这个胸牌是加密的,别人无法复制
  • 你可以自由进入任何允许的会议室,保安只需要扫描胸牌就能验证

二、jwt 在 spring boot 中的具体作用

身份验证(登录后)

  • 用户登录后,服务器生成一个 jwt 令牌
  • 这个令牌包含用户的基本信息(用户名、id、角色等)
  • 客户端(浏览器 / 手机)保存这个令牌
  • 后续每次请求都带上这个令牌,就像你戴着游乐园手环一样

授权(权限控制)

  • jwt 令牌中可以包含用户的角色信息(如管理员、普通用户)
  • 服务器收到请求后,检查令牌中的角色信息
  • 决定用户是否有权限访问特定资源(比如只有管理员能删除数据)

无状态性(最重要的特点)

  • 服务器不需要存储令牌信息(不像传统的 session 方式)
  • 就像游乐园的手环,工作人员不需要查电脑,直接看手环就能验证
  • 这使得系统更容易扩展到多个服务器(微服务架构)

三、为什么要用 jwt?(对比传统方式)

传统的 session/cookie 方式

  • 你去超市办了一张会员卡
  • 每次消费都要刷卡,店员要查数据库确认你的身份
  • 如果超市开了很多分店,数据同步会很麻烦
  • 如果会员卡丢了,别人可能冒用你的身份

jwt 方式

  • 你在银行办了一张电子支票
  • 支票上有你的信息、金额、有效期,而且是加密的
  • 任何银行都可以直接验证支票的真实性,不需要联网查数据库
  • 即使支票被别人捡到,没有密钥也无法修改信息

四、spring boot 3 中 jwt 的工作流程

用户登录

  • 用户提供用户名和密码
  • spring boot 验证后,生成一个 jwt 令牌

客户端保存

  • 浏览器把令牌保存在 localstorage 或 cookie 中
  • 移动应用把令牌保存在应用内存储中

请求资源

  • 客户端在每个请求的 header 中添加 authorization: bearer <token>
  • 就像你去餐厅吃饭,进门时出示你的会员卡

服务器验证

  • spring boot 检查令牌的签名和有效期
  • 提取用户信息,确定访问权限
  • 处理请求并返回结果

五、jwt 的优缺点

优点

  • 无状态,易于扩展(适合微服务)
  • 跨域支持好(不需要担心 cookie 跨域问题)
  • 性能高(不需要频繁查询数据库)
  • 可以在令牌中包含自定义信息

缺点

  • 令牌体积较大(相比简单的 session id)
  • 一旦签发,很难立即撤销(除非实现黑名单机制)
  • 令牌过期后,用户需要重新登录

六、生活中的 jwt 例子总结

  • 登机牌:包含你的姓名、航班号、座位号、登机口,全球机场通用
  • 酒店房卡:包含你的姓名、房间号、有效期,所有酒店员工都能验证
  • 电子优惠券:包含优惠金额、有效期、使用条件,商家扫码就能验证

jwt 的核心思想就是:一次验证,到处通行,而且验证过程简单高效。这就是为什么它在现代 web 应用中如此受欢迎。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com