首先在pom.xml引入依赖
<!--jwt坐标-->
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>4.4.0</version>
</dependency>
引入测试类
<!--单元测试-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
测试类代码
生成JWT令牌测试类代码
@Test //生成jwt令牌
public void testGen(){
// 初始化一个Map用于存储JWT的声明(claims)
Map<String,Object> claims = new HashMap<>();
// 模拟入参
claims.put("id",1);
claims.put("username","zxd");
// 创建JWT,设置用户声明、过期时间和签名算法
String token = JWT.create()
.withClaim("user",claims)// 添加载荷
.withExpiresAt(new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 24 * 7))//添加过期时间
.sign(Algorithm.HMAC256("itzxd"));//指定算法,配置秘钥,此秘钥不可泄露
System.out.println(token);
}
解析和验证JWT令牌测试类代码
@Test //token解析
public void testParse(){
// 模拟用户传递过来的token
String token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7ImlkIjoxLCJ1c2VybmFtZSI6Inp4ZCJ9LCJleHAiOjE3MjEwMTI2OTZ9.xe7TEy1H7UmBxt0I-QjW1wOD43a7kFCyymnWvFyHfpc";
// 创建JWT验证器,使用HMAC256算法,密钥为"itzxd"
JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256("itzxd")).build();
// 使用验证器验证JWT令牌的有效性,并返回解析后的JWT对象
DecodedJWT decodedJWT = jwtVerifier.verify(token);
// 提取JWT中的声明(claims)
Map<String, Claim> claim = decodedJWT.getClaims();
// 输出声明中名为"user"的值
System.out.println(claim.get("user"));
// 如果篡改了头部和载荷部分的数据,验证失败
// 如果篡改了秘钥部分,验证失败
// token过期,验证失败
}
标签:令牌,验证,JWT,System,token,claims From: https://www.cnblogs.com/ZXDZXD/p/18289554