使用Java生成JWT令牌的示例代码
(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun)
1. 在pom.xml中引入依赖
<dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.9.1</version> </dependency>
2. 使用Jwts的相关方法生成令牌
import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import java.util.Date; import java.util.HashMap; import java.util.Map; @SpringBootTest class DemoApplicationTests { /** * 生成JWT令牌 */ @Test public void testGenJwt() { Map<String, Object> claims = new HashMap<>(); claims.put("id", 1); claims.put("name", "tom"); String jwt = Jwts.builder() .signWith(SignatureAlgorithm.HS256, "itheima") // 签名算法 .setClaims(claims) // 自定义内容(载荷) .setExpiration(new Date(System.currentTimeMillis() + 3600 * 1000)) // 设置令牌有效期为1小时 .compact(); System.out.println(jwt); } }
3. 把生成的令牌复制到JWT官网,查看原始数据
4. 基于Java代码解析生成的令牌
import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import java.util.Date; import java.util.HashMap; import java.util.Map; @SpringBootTest class DemoApplicationTests { /** * 生成JWT令牌 */ @Test public void testGenJwt() { Map<String, Object> claims = new HashMap<>(); claims.put("id", 1); claims.put("name", "tom"); String jwt = Jwts.builder() .signWith(SignatureAlgorithm.HS256, "itheima") // 签名算法 .setClaims(claims) // 自定义内容(载荷) .setExpiration(new Date(System.currentTimeMillis() + 3600 * 1000)) // 设置令牌有效期为1小时 .compact(); System.out.println(jwt); } /** * 解析令牌 */ @Test public void testParseJwt() { Claims claims = Jwts.parser() .setSigningKey("itheima") // 指定签名密钥 // 解析令牌 .parseClaimsJws("eyJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoidG9tIiwiaWQiOjEsImV4cCI6MTY3MDQ2NzIyNH0.jL02hIWc1fZBjzvFCTtW4ZlSJ424khsobogsq0X2KVc") .getBody(); System.out.println(claims); } }
注意事项:
①JWT校验时使用的签名密钥,必须和生成JWT令牌时使用的密钥是配套的。
②如果JWT令牌解析校验时报错,则说明JWT令牌被篡改或失效了,令牌非法。
到此这篇关于使用Java生成JWT令牌的示例代码的文章就介绍到这了,更多相关Java生成JWT令牌内容请搜索程序员之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持程序员之家!
相关文章
Spring Junit测试找不到SpringJUnit4ClassRunner.class的解决
这篇文章主要介绍了Spring Junit测试找不到SpringJUnit4ClassRunner.class的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-04-04解决Mybatis在IDEA中找不到mapper映射文件的问题
这篇文章主要介绍了解决Mybatis在IDEA中找不到mapper映射文件的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-10-10Spring注解驱动之关于@Bean注解指定初始化和销毁的方法
这篇文章主要介绍了Spring注解驱动之关于@Bean注解指定初始化和销毁的方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-09-09为何修改equals方法时还要重写hashcode方法的原因分析
这篇文章主要介绍了为何修改equals方法时还要重写hashcode方法的原因分析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-06-06Springboot接口返回参数及入参RSA加密解密的过程详解
这篇文章主要介绍了Springboot接口返回参数及入参RSA加密解密,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2023-07-07Spring Boot中使用JDBC Templet的方法教程
这篇文章主要给大家介绍了关于在Spring Boot中使用JDBC Templet的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。2018-03-03java数据结构之二分查找法 binarySearch的实例
这篇文章主要介绍了java数据结构之二分查找法 binarySearch的实例的相关资料,希望通过本文能帮助到大家,让大家理解掌握这部分内容,需要的朋友可以参考下2017-10-10
最新评论