hutool简介
Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。
Hutool中的工具方法来自每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当;
Hutool是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的bug。
引入依赖
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.16</version>
</dependency>
JWT
JWT(JSON WEBTOKEN):JSON网络令牌,JWT是一个轻便的安全跨平台传输格式,定义了一个紧凑的自包含的方式在不同实体之间安全传输信息(JSON格式)。它是在Web环境下两个实体之间传输数据的一项标准。实际上传输的就是一个字符串。广义上讲JWT是一个标准的名称;狭义上JWT指的就是用来传递的那个token字符串
JWT原理
JWT组成
JWT由三部分组成:
- Header(头部)
- Payload(负载)
- Signature(签名)
因此,JWT通常如下所示:
xxxxxxxxxxxxxxx.yyyyyyyyyyyyyyyyyyyyyyyyy.mmmmmmmmmmmmmmmmmm
JWT工具类
public class JwtUtil {
// 密钥
private final static String SIGN = "123456";
// token有效时长 (小时)
private final static int EXPIRE_TIME = 2;
/**
* 生成token
* @param map 传入payload(信息体)
* @return
*/
public static String getToken(Map<String, Object> map) {
String token = JWT.create()
// 信息体
.addPayloads(map)
// 密钥
.setKey(SIGN.getBytes())
// 过期时间(2小时)
.setExpiresAt(DateUtil.offsetHour(DateUtil.date(), EXPIRE_TIME))
.sign();
return token;
}
/**
* 验证token
* @param token 传入token
* @return
*/
public static Boolean validationToken(String token) {
// 验证token是否有效
if (JWTUtil.verify(token, SIGN.getBytes())) {
// 验证token是否过期
try {
JWTValidator.of(token).validateDate();
} catch (ValidateException e) {
return false;
}
}
return true;
}
/**
* 解析token
* @param token 传入token
* @return
*/
public static JSONObject parseToken(String token) {
// 验证token
if (validationToken(token)) {
return JWTUtil.parseToken(token).getPayloads();
}
// token无效 换成自己项目异常处理
return null;
}
}