Files
BasicDependVersion/njcn-common/src/main/java/com/njcn/common/utils/JwtUtil.java

66 lines
2.0 KiB
Java
Raw Normal View History

2024-11-18 10:25:13 +08:00
package com.njcn.common.utils;
2024-11-25 14:15:41 +08:00
import cn.hutool.core.date.DateUnit;
2024-11-18 10:25:13 +08:00
import cn.hutool.jwt.JWT;
import cn.hutool.jwt.JWTUtil;
import java.nio.charset.StandardCharsets;
import java.time.Instant;
import java.util.HashMap;
import java.util.Map;
/**
* @author caozehui
* @data 2024/11/18
*/
public class JwtUtil {
/**
* 过期时间(单位:)
*/
2024-11-25 14:15:41 +08:00
public static final long ACCESS_EXPIRE = DateUnit.DAY.getMillis() / 1000;
2024-11-18 10:25:13 +08:00
private final static String SECRET = "da3f9a7ad5a7d9dd5a7d9dd5a7d9d";
/**
* jwt主题
*/
private final static String SUBJECT = "NJCN_PQS9100";
/**
* jwt签发者
*/
private final static String JWT_ISS = "NJCN";
public static String generateToken(String userId) {
Map<String, Object> headers = new HashMap<>();
headers.put("typ", "JWT");
headers.put("alg", "HS256");
Map<String, Object> payload = new HashMap<>();
payload.put("userId", userId);
payload.put("exp", Instant.now().plusSeconds(ACCESS_EXPIRE).getEpochSecond());
payload.put("sub", SUBJECT);
payload.put("iss", JWT_ISS);
payload.put("iat", Instant.now().getEpochSecond());
return JWTUtil.createToken(headers, payload, SECRET.getBytes(StandardCharsets.UTF_8));
}
2024-11-21 15:48:31 +08:00
public static boolean verifyToken(String token) {
return JWTUtil.verify(token, SECRET.getBytes(StandardCharsets.UTF_8));
}
public static boolean isExpired(String token) {
return !JWT.of(token).setKey(SECRET.getBytes(StandardCharsets.UTF_8)).validate(0);
}
2024-11-18 10:25:13 +08:00
public static Map<String, Object> parseToken(String token) {
return JWTUtil.parseToken(token)
.setKey(SECRET.getBytes(StandardCharsets.UTF_8))
.getPayload()
.getClaimsJson();
}
public static void invalidateToken(String token) {
2024-11-21 15:48:31 +08:00
JWT.of(token).setKey(SECRET.getBytes(StandardCharsets.UTF_8)).setPayload("exp", Instant.now().getEpochSecond());
2024-11-18 10:25:13 +08:00
}
}