Hutool包是一个小而全的工具包,里边封装了对各种对象进行操作的工具类
最近在做jwt令牌校验的时候发现了hutool包也对jwt做了相应的工具类 ,昨天摸索了一下午也是简单使用了一下
/**
*
* JWT令牌的生成
*/
@Test
public void DateTim(){
//获取当前时间
DateTime now = DateTime.now();
//获取十分钟之后的时间
DateTime newTime = now.offsetNew(DateField.MINUTE, 10);
//使用Map集合来存储载荷信息、有效期
Map<String,Object> payload=new HashMap<>();
//签发时间
payload.put(JWTPayload.ISSUED_AT,now);
//过期时间
payload.put(JWTPayload.EXPIRES_AT,newTime);
//生效时间
payload.put(JWTPayload.NOT_BEFORE,now);
payload.put("username","张三");
payload.put("password","ayx654321");
String token = JWTUtil.createToken(payload, "abc".getBytes());
log.info(token);
}
在生成JWt令牌时这里我没有指定签名算法,默认使用的HS256签名算法
@Test
public void parseJwtTest(){
//要解析jwt令牌的签名秘钥
String key ="abc";
//要解析的令牌
String token ="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJwYXNzd29yZCI6ImF5eDY1NDMyMSIsIm5iZiI6MTcyMjE1OTM4OCwiZXhwIjoxNzIyMTU5OTg4LCJpYXQiOjE3MjIxNTkzODgsInVzZXJuYW1lIjoi5byg5LiJIn0.DmaxoH4nd2jnVfDuvtKF7NyPaHG16k1mR4peAFfFfnk";
JWT jwt = JWTUtil.parseToken(token);
//获取全部载荷信息
JWTPayload payload = jwt.getPayload();
payload.getClaimsJson().forEach((k,v)-> System.out.println(k+"--->"+v));
//验证是否正确
boolean verify = jwt.setKey(key.getBytes()).verify();
System.out.println(verify);
//验证是否过期
boolean validate = jwt.validate(0);
System.out.println(validate);
}
、上面的jwt.setkey(key.getBytes()).verify()方法通过传入令牌的签名秘钥并对给定的令牌的签名秘钥进行一致性校验