《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
io.jsonwebtoken
jjwt
0.6.0
(2)创建类CreatejwtTest,用于生成token
public class CreateJwtTest {
public static void main(String[] args) {
JwtBuilder builder= Jwts.builder().setId(“888”)
.setSubject(“小白”)
.setIssuedAt(new Date())//用于设置签发时间
.signWith(SignatureAlgorithm.HS256,“wangmh”);//用于设置签名秘钥
System.out.println( builder.compact() );
}
}
(3)测试
eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI4ODgiLCJzdWIiOiLlsI_nmb0iLCJpYXQiOjE1MjM0M
TM0NTh9.gq0J‐cOM_qCNqU_s‐d_IrRytaNenesPmqAIhQpYXHZk
#再次运行,每次运行结果都会不一样,因为我们载荷中包含了时间
3.token的解析
public class ParseJwtTest {
public static void main(String[] args) {
String compactJws=“eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI4ODgiLCJzdWIiOiLlsI_nmb0iLCJpYXQiOjE1MjM0MTM0NTh9.gq0J‐cOM_qCNqU_s‐d_IrRytaNenesPmqAIhQpYXHZk”;
Claims claims =
Jwts.parser().setSigningKey(“wangmh”).parseClaimsJws(compactJws).getBody();
System.out.println(“id:”+claims.getId());
System.out.println(“subject:”+claims.getSubject());
System.out.println(“IssuedAt:”+claims.getIssuedAt());
}
}
//试着将token或签名秘钥篡改一下,会发现运行时就会报错,所以解析token也就是验证token
4.token过期校验
有很多时候,我们并不希望签发的token是永久生效的,所以我们可以为token添加一个
过期时间。
public class CreateJwtTest2 {
public static void main(String[] args) {
//为了方便测试,我们将过期时间设置为1分钟
long now = System.currentTimeMillis();//当前时间
long exp = now + 1000*60;//过期时间为1分钟
JwtBuilder builder= Jwts.builder().setId(“888”)
.setSubject(“小白”)
.setIssuedAt(new Date())
.signWith(SignatureAlgorithm.HS256,“wangmh”)
.setExpiration(new Date(exp));//用于设置过期时间
System.out.println( builder.compact() );
}
}
public class ParseJwtTest {
public static void main(String[] args) {
String compactJws&#