1.添加依赖
<dependencies>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
2.json web token的生成
private long time = 1000 * 60 * 60 * 24;
private String signature = "adminX";
@Test
public void test1(){
//JWT的生成
JwtBuilder builder = Jwts.builder();
String token = builder
//设置Header
.setHeaderParam("type","JWT")
.setHeaderParam("algorithm","HS256")
//设置payload(载荷)
.claim("user","xdn")
.claim("role","root")
.setSubject("admin")
.setExpiration(new Date(System.currentTimeMillis() + time))
.setId(UUID.randomUUID().toString())
//设置signature
.signWith(SignatureAlgorithm.HS256,signature)
.compact();
System.out.println(token);
}
2.1结果
eyJ0eXBlIjoiSldUIiwiYWxnb3JpdGhtIjoiSFMyNTYiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoieGRuIiwicm9sZSI6InJvb3QiLCJzdWIiOiJhZG1pbiIsImV4cCI6MTY1MjE1NjEzNSwianRpIjoiNGVmZTM5YmMtMzU5MC00YmE3LTg1NzMtMGEyOTFjM2EwZDM0In0.U415N2lFvGui-aHLtrWWa4lHHFG-HALv1hkE7jy-MLM
3.解析
@Test
public void test2(){
//jwt的解析
String token = "eyJ0eXBlIjoiSldUIiwiYWxnb3JpdGhtIjoiSFMyNTYiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoieGRuIiwicm9sZSI6InJvb3QiLCJzdWIiOiJhZG1pbiIsImV4cCI6MTY1MjE1NTI2OSwianRpIjoiODBiZjU1MzUtNTdhNi00MDgyLWJmYTktYmMxYmY0ZTg2NTY1In0.rAgdd6EK2HiuzPpbNOPUg7_IlhBZIxSrKwITP2Pk3PY";
JwtParser parser = Jwts.parser();
Jws<Claims> claimsJws = parser.setSigningKey(signature).parseClaimsJws(token);
Claims body = claimsJws.getBody();
System.out.println(body.get("user"));
System.out.println(body.get("role"));
System.out.println(body.getExpiration());
System.out.println(body.getSubject());
System.out.println(body.getId());
}
}
3.1结果