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

五分钟学会如何基本使用JJWT!!!

✨✨✨这里是秋刀鱼不做梦的BLOG

✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客

目录

一、JJWT 是什么?

二。基本使用

        (1)引入依赖

        (2)生成密钥(使用HS256 签名)

        (3)封装 JWT 工具类

三、使用示例


一、JJWT 是什么?

        JJWT 是一个用于在 Java 项目中生成和验证 JSON Web Token(JWT)的库,它由 io.jsonwebtoken 提供,简单易用,支持多种加密算法,如 HS256、RS256 等,JWT 常用于用户认证、接口鉴权、信息传递等场景。

二。基本使用

        (1)引入依赖

——首先先引入JJWT所需的依赖

<!-- 核心API -->
<dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-api</artifactId><version>0.11.5</version>
</dependency><!-- 底层实现包 -->
<dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-impl</artifactId><version>0.11.5</version><scope>runtime</scope>
</dependency><!-- JSON 处理工具,使用 Jackson -->
<dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-jackson</artifactId> <!-- jjwt-gson 也可以 --><version>0.11.5</version><scope>runtime</scope>
</dependency>

        (2)生成密钥(使用HS256 签名)

——在测试方法中或随便一个main方法中生成一共密钥用户后续使用

// 生成安全的随机密钥
Key key = Keys.secretKeyFor(SignatureAlgorithm.HS256);// 将密钥编码成 Base64 字符串(用于配置文件等)
String base64Key = Encoders.BASE64.encode(key.getEncoded());
System.out.println("Base64 密钥:" + base64Key);

        (3)封装 JWT 工具类

——通常我们会将JWT封装为一共工具类,其中包含 token 的生成和解析方法

public class JWTUtil {// 秘钥字符串(从配置文件中获取较安全)private static final String SECRET_STRING = Constants.USER_LOGIN_KEY;// 转换为 key 对象private static final Key key = Keys.hmacShaKeyFor(SECRET_STRING.getBytes(StandardCharsets.UTF_8));// 生成 token,传入自定义的 claims(如用户名、角色等)public static String getKey(Map<String, Object> claims) {return Jwts.builder().setClaims(claims)         // 设置自定义内容.signWith(key)             // 设置签名密钥.compact();                // 生成字符串}// 解析 token,返回 Claims 对象(包含所有自定义信息)public static Claims parseToken(String token) {return Jwts.parserBuilder().setSigningKey(key)        // 设置签名密钥.build().parseClaimsJws(token)     // 解析 token.getBody();                // 获取 Claims 部分}
}

三、使用示例

——以下为一个使用案例

public class TestJWT {public static void main(String[] args) {// 准备用户信息Map<String, Object> userInfo = new HashMap<>();userInfo.put("username", "zhangsan");userInfo.put("role", "admin");// 生成 tokenString token = JWTUtil.getKey(userInfo);System.out.println("生成的 JWT:" + token);// 解析 tokenClaims claims = JWTUtil.parseToken(token);System.out.println("解析出的用户信息:");System.out.println("用户名:" + claims.get("username"));System.out.println("角色:" + claims.get("role"));}
}


以上就是本篇文章的全部内容了~~~

http://www.xdnf.cn/news/527.html

相关文章:

  • Java虚拟机面试题:垃圾收集(下)
  • 3.基础开发工具
  • CLIP赋能视频分析:时空侧网络调优,行人属性识别效率革命
  • Java—— 常见API介绍 第二期
  • C++/Python实现RGB和HSI相互转换
  • Linux——firewalld防火墙(笔记)
  • 深度学习语音识别
  • bat脚本转换为EXE应用程序文件
  • 案例驱动的 IT 团队管理:创新与突破之路:第六章 组织进化:从案例沉淀到管理体系-6.1 案例库建设方法论-6.1.2案例分级与标签体系
  • OpenStack Yoga版安装笔记(23)Swift安装
  • QML中的3D功能--模型导入与修改
  • LRU Java实现
  • 五、小白如何用Pygame制作一款跑酷类游戏(主角跳跃和滑行动作的实现)
  • Linux | I.MX6ULL 使用 Yocto 文件系统开发 QT
  • 015-C语言字符函数和字符串函数
  • java蓝桥杯b组
  • 大模型Rag - 两大检索技术
  • 【滑动窗口】最⼤连续 1 的个数 III(medium)
  • 【java实现+4种变体完整例子】排序算法中【桶排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格
  • 大数据平台简介
  • 掌握 MySQL:从命令行操作到数据类型与字段管理
  • 论文阅读:2025 arxiv AI Alignment: A Comprehensive Survey
  • Zookeeper的通知机制是什么?
  • 【更新完毕】2025妈妈杯C题 mathercup数学建模挑战赛C题数学建模思路代码文章教学:音频文件的高质量读写与去噪优化
  • xilinx fpga中pll与mmcm的区别
  • 【DT】USB通讯失败记录
  • MySQL 全局锁:全量备份数据要怎么操作?
  • 04_银行个贷系统下的技术原理解析
  • LLM多卡并行计算:Accelerate和DeepSpeed
  • 数据可视化(Matplotlib和pyecharts)