private static final long EXPIRE_TIME = 60 * 1000; Date date = new Date(System.currentTimeMillis() + EXPIRE_TIME);
时间: 2024-02-20 19:58:51 浏览: 176
System.currentTimeMillis()计算方式与时间的单位转换详解
5星 · 资源好评率100%
这段代码定义了一个常量 `EXPIRE_TIME`,表示 JWT 的过期时间为 60 秒。在生成 JWT 时,通过 `System.currentTimeMillis()` 获取当前时间的毫秒数,加上 `EXPIRE_TIME` 的值,即可得到 JWT 的过期时间。具体的代码如下:
```java
private static final long EXPIRE_TIME = 60 * 1000; // JWT 过期时间为 60 秒
// 生成 JWT 的方法
public static String generateJwtToken(User user) {
// 构造 JWT 的负载信息
Map<String, Object> claims = new HashMap<>();
claims.put("user_id", user.getId());
claims.put("username", user.getUsername());
claims.put("role", user.getRole());
// 设置 JWT 的过期时间
Date expireDate = new Date(System.currentTimeMillis() + EXPIRE_TIME);
String token = Jwts.builder()
.setClaims(claims)
.setExpiration(expireDate)
.signWith(SignatureAlgorithm.HS512, "secret_key")
.compact();
return token;
}
```
在上述代码中,`Jwts.builder()` 方法用于创建一个 JWT 构造器,`setClaims(claims)` 方法将负载信息添加到 JWT 中,`setExpiration(expireDate)` 方法设置 JWT 的过期时间,`signWith(SignatureAlgorithm.HS512, "secret_key")` 方法用于对 JWT 进行签名。最后,调用 `compact()` 方法将 JWT 转换为字符串格式,并返回生成的 JWT。
需要注意的是,这段代码中的过期时间是硬编码的,如果需要设置不同的过期时间,可以将过期时间作为方法参数传入,并在代码中进行相应的修改。
阅读全文