JTW的使用
引入依赖
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.0</version>
</dependency>
加密
//设置过期时间
private long time=1000*60*60*24;
//签名信息
private String signatrue="admin";
@Test
public void test1(){
JwtBuilder jwtBuilder = Jwts.builder();
//header信息
HashMap<String, Object> headerMap = new HashMap<>();
headerMap.put("typ","JWT");
headerMap.put("alg","HS256");
//payload信息
HashMap<String, Object> payloadMap = new HashMap<>();
payloadMap.put("username", "tom");
payloadMap.put("role", "admin");
String jwtToken = jwtBuilder
//header
.setHeaderParams(headerMap)
//payload
.setClaims(payloadMap)
//主题
.setSubject("admin-test")
//有效时间
.setExpiration(new Date(System.currentTimeMillis() + time))
//id
.setId(UUID.randomUUID().toString())
//signature
.signWith(SignatureAlgorithm.HS256,signatrue)
//拼接
.compact();
System.out.println(jwtToken);
}
解密
@Test
public void parse(){
//jwtToken
String token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbi10ZXN0Iiwicm9sZSI6ImFkbWluIiwiZXhwIjoxNjY4MTQ4NTY1LCJqdGkiOiIwZDBlYzcwMy0xYWJhLTQyNmQtYjYwOS0zZTk3NDc1NGNiMGUiLCJ1c2VybmFtZSI6InRvbSJ9.eqN-rH2F80JCK01Hj2PeGmwx1LMr6pJOF1_SUuaAfgo";
JwtParser jwtParser=Jwts.parser();
Jws<Claims> claimsJws = jwtParser.setSigningKey(signatrue).parseClaimsJws(token);
Claims claims = claimsJws.getBody();
System.out.println(claims.get("username"));
System.out.println(claims.get("role"));
System.out.println(claims.getId());
System.out.println(claims.getExpiration());
System.out.println(claims.getSubject());
}