JWT使用
1、导入maven依赖
io.jsonwebtoken
jjwt
0.9.1
2、测试代码
package com.codertl.jwt;
import io.jsonwebtoken.*;
import org.junit.jupiter.api.Test;
import java.util.Date;
import java.util.UUID;
/**
* @Description
* @Author Admin
* @Date 2021/11/8
*/
public class test {
// 定义有效期 一天
private long time = 1000 * 60 * 60 * 24;
// 签名信息
private String signature = "admin";
@Test
public void jwt() {
// 创建 jwt 对象
JwtBuilder jwtBuilder = Jwts.builder();
String jwtToken = jwtBuilder
// header 头部
.setHeaderParam("type", "JWT")
.setHeaderParam("alg", "HS256")
// payload 载体
.claim("username", "codertl")
.claim("role", "admin")
// 主题
.setSubject("admin-test")
// 有效时间 一天
.setExpiration(new Date(System.currentTimeMillis()+ time))
.setId(UUID.randomUUID().toString())
// 签名 signature
.signWith(SignatureAlgorithm.HS256, signature)
.compact();
System.out.println(jwtToken);
}
@Test
public void parse() {
String token = "上边生成的 token";
JwtParser jwtParser = Jwts.parser();
Jws claimsJws = jwtParser.setSigningKey(signature).parseClaimsJws(token);
Claims claims = claimsJws.getBody();
System.out.println("用户名:" + claims.get("username"));
System.out.println("角色:" + claims.get("role"));
System.out.println("Id:" + claims.getId());
System.out.println("签名" + claims.getSubject());
System.out.println("有效期" + claims.getExpiration());
}
}