jwt
解析token
https://jwt.io/
maven依赖
io.jsonwebtoken
jjwt
0.9.0
测试
package com;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import java.text.SimpleDateFormat;
import java.util.Date;
@SpringBootTest
class JjwtdemoApplicationTests {
// 创建token
@Test
public void testCreateToken(){
//当前系统时间
long now =System.currentTimeMillis();
// 过期时间一分钟
long exp =now+60*1000;
//创建JwtBuilder对象
JwtBuilder jwtBuilder = Jwts.builder()
//声明的标识{"jti":"8888"}
.setId("8888")
//主体,用户{"sub":"Rose"}
.setSubject("Rose")
//创建日期{"ita":"xxxxxx"}
.setIssuedAt(new Date())
// xxxx是盐
.signWith(SignatureAlgorithm.HS256,"xxxx")
//设置过期时间
.setExpiration(new Date(exp))
//自定义申明
.claim("roles","admin")
.claim("logo","xxx.jpg");
// 另外一种方法,直接传入map
// .addClaims(map)
//获取jwt的token
String token = jwtBuilder.compact();
System.out.println(token);
// //解析token
// System.out.println("=================");
// String[] splist =token.split("\\.");
// System.out.println(splist);
// System.out.println(Base64Codec.BASE64.decodeToString(splist[0]));
// System.out.println(Base64Codec.BASE64.decodeToString(splist[1]));
//// 签名部分
// System.out.println(Base64Codec.BASE64.decodeToString(splist[2]));
}
// 解析token
@Test
public void testParseToken(){
String token="eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI4ODg4Iiwic3ViIjoiUm9zZSIsImlhdCI6MTY0OTIzNDg3OSwiZXhwIjoxNjQ5MjM0OTM5LCJyb2xlcyI6ImFkbWluIiwibG9nbyI6Inh4eC5qcGcifQ.y3OQjS4kxRXU3NOcdNaCWT9_1M5sagQoUCqyfZc9_sU";
//解析token
Claims claims = Jwts.parser()
.setSigningKey("xxxx")
.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()));
//获取自定义
System.out.println("roles:"+claims.get("roles"));
System.out.println("logo:"+claims.get("logo"));
}