hutool工具类jwt
时间: 2024-12-28 07:29:08 浏览: 10
### Hutool 中 JWT 使用方法
#### 生成 JWT Token
通过 `JWTUtil` 可以方便地创建 JSON Web Tokens (JWT),这通常涉及设置载荷(payload),即令牌中的声明数据。下面展示如何构建并获取一个带有特定过期时间的 token。
```java
import cn.hutool.jwt.JWT;
import cn.hutool.jwt.JWTUtil;
public class CodeJwtTest {
public static void main(String[] args) {
// 创建jwt对象, 设置有效时间和自定义负载
String token = JWTUtil.createToken(
new HashMap<String,Object>(){{
put("userId", "10086");
put("username","admin");
}},
DateUtil.offsetHour(new Date(), 2).getTime() // 当前时间两小时后的毫秒数作为过期时间戳
);
System.out.println(token);
}
}
```
此代码片段展示了怎样使用 `createToken()` 方法来生成包含用户 ID 和用户名字段的有效时间为两个小时的 JWT 字符串[^2]。
#### 验证 JWT Token 并解析 Payload 数据
为了验证接收到的 token 是否合法以及提取其中的信息,可以调用 `parseToken()` 函数来进行解码操作。如果校验失败,则会抛出异常;成功的话则返回对应的 `JWT` 对象实例,从中可读取原始 payload 内容。
```java
import cn.hutool.jwt.JWT;
import cn.hutool.jwt.JWTValidator;
public class JwtVerify {
private final static long EXPIRE_TIME = 7 * 24 * 3600 * 1000; // 过期时间七天
/**
* 解析token
*/
public static Map<String, Object> parseToken(String token){
try {
JWT jwt = JWTUtil.parseToken(token);
boolean isValid = JWTValidator.of(token)
.validateDate(System.currentTimeMillis()); // 校验当前时间是否超过有效期
if (!isValid) throw new RuntimeException("Token has expired");
return jwt.getPayloads();
} catch (Exception e) {
throw new RuntimeException(e.getMessage());
}
}
public static void main(String[] args) throws Exception {
// 测试已知有效的token字符串
String testToken = "..."; // 替换成实际测试使用的token
Map<String, Object> info = parseToken(testToken);
System.out.println(info.toString());
}
}
```
上述例子说明了当接收到来自客户端请求携带的 token 后端服务端应该如何对其进行合法性检查,并安全可靠地访问其内部存储的数据项。
阅读全文