Springboot整合JWT测试篇(一)
一、pom文件中引入依赖
<!--引入jwt--> <dependency> <groupId>com.auth0</groupId> <artifactId>java-jwt</artifactId> <version>3.4.0</version> </dependency>
二、测试生成token值
// 测试生成token代码 @Test void createToken() { Calendar instance = Calendar.getInstance(); // 设置过期时间(这里是100秒) instance.add(Calendar.SECOND, 100); //生成令牌 String token = JWT.create() //负载:设置自定义用户名 .withClaim("username", "张三") //设置过期时间 .withExpiresAt(instance.getTime()) //签名:设置签名(加盐) 保密 复杂 .sign(Algorithm.HMAC256("tokenXiaoGao")); //输出令牌 System.out.println(token); }
结果如下:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2NzY5NDc4MzYsInVzZXJuYW1lIjoi5byg5LiJIn0.eW2fjMBsv2uOqqsDeHjlJUnu-2GAtw-QVxroyNc6Tj8
三、解析token值
// 解码token @Test void unlockToken(){ //1.验证签名 JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256("tokenXiaoGao")).build(); //2.解析token DecodedJWT decodedJWT = jwtVerifier.verify("eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2NzY5NDc4MzYsInVzZXJuYW1lIjoi5byg5LiJIn0.eW2fjMBsv2uOqqsDeHjlJUnu-2GAtw-QVxroyNc6Tj8"); System.out.println("用户名: " + decodedJWT.getClaim("username").asString()); // 存的是时候是什么类型,取得时候就是什么类型,否则取不到值。 System.out.println("过期时间: "+decodedJWT.getExpiresAt()); }
结果如下:
用户名: 张三
过期时间: Tue Feb 21 10:50:36 CST 2023
四、常见异常
SignatureVerificationException: 签名不一致异常
TokenExpiredException: 令牌过期异常
AlgorithmMismatchException: 算法不匹配异常
InvalidClaimException: 失效的payload异常
标签:
后端
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~