创建带失效时间的token

/**
 * @Title testCreateTokenHasExp
 * @Description TODO 创建token(带失效时间) 
 * @Author admin 
 * @UpdateTime 2022/3/4 17:21 
 * @Throws 
 */
@Test
public void testCreateTokenHasExp() {
    // 获取当前系统时间
    long now = System.currentTimeMillis();
    // 设置过期时间:2分钟
    long exp = now + 120 * 1000;
    // 创建JwtBuilder对象
    JwtBuilder jwtBuilder = Jwts.builder()
            // 声明的标识{"jti":"8888"}
            .setId("8888")
            // 主体,用户(所面向的接收客户){"sub":"Rose"}
            .setSubject("Rose")
            // 设置签发时间 创建日期("ita":"年月日")
            .setIssuedAt(new Date())
            // 设置签名(算法,加盐)
            .signWith(SignatureAlgorithm.HS256,"xxxx")
            // 设置失效过期时间
            .setExpiration(new Date(exp));
    // 获取生成jwt令牌
    String token = jwtBuilder.compact();
    System.out.println(token);


    System.out.println("==================");
    // 分割字符.
    String[] split = token.split("\\.");
    // 分割第一部分:头部信息
    System.out.println(Base64Codec.BASE64.decodeToString(split[0]));
    // 分割第二部分:荷载信息
    System.out.println(Base64Codec.BASE64.decodeToString(split[1]));
    // 分割第三部分:签名信息  注:签名信息有加盐,无法解密  会形成乱码
    System.out.println(Base64Codec.BASE64.decodeToString(split[2]));
}

解析带失效时间的token

/**
 * @Title testParseTokenHasExp
 * @Description TODO 解析token(带失效时间) 
 * @Author admin 
 * @UpdateTime 2022/3/4 17:21 
 * @Throws 
 */
@Test
public  void testParseTokenHasExp(){
    String token="eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI4ODg4Iiwic3ViIjoiUm9zZSIsImlhdCI6MTY0NjM4NTUyMSwiZXhwIjoxNjQ2Mzg1NjQxfQ.t92lJhxqS714y7eTRzrKGCV1j4S_uArxRey8WrNUmHg";
    // 解析token  获取负载中声明的对象
    Claims claims = Jwts.parser()
            // 准备加盐秘钥
            .setSigningKey("xxxx")
            // 提供token
            .parseClaimsJws(token)
            // 添加主体
            .getBody();
    // 打印输出声明对象
    System.out.println("id:"+claims.getId());
    System.out.println("subject:"+claims.getSubject());
    System.out.println("issuedAt:"+claims.getIssuedAt());
    // 格式化时间
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    System.out.println("签发时间:"+simpleDateFormat.format(claims.getIssuedAt()));
    System.out.println("过期时间:"+simpleDateFormat.format(claims.getExpiration()));
    System.out.println("当前时间:"+simpleDateFormat.format(new Date()));
}