微调
This commit is contained in:
@@ -67,7 +67,7 @@ public interface SecurityConstants {
|
|||||||
|
|
||||||
String GRANT_TYPE_KEY = "grant_type";
|
String GRANT_TYPE_KEY = "grant_type";
|
||||||
|
|
||||||
String REFRESH_TOKEN_KEY = "refresh_token";
|
String REFRESH_TOKEN_KEY = "Refresh-token";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 黑名单token前缀
|
* 黑名单token前缀
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
package com.njcn.common.utils;
|
package com.njcn.common.utils;
|
||||||
|
|
||||||
|
import cn.hutool.core.convert.NumberWithFormat;
|
||||||
import cn.hutool.core.date.DateUnit;
|
import cn.hutool.core.date.DateUnit;
|
||||||
import cn.hutool.jwt.JWT;
|
import cn.hutool.jwt.JWT;
|
||||||
|
import cn.hutool.jwt.JWTPayload;
|
||||||
import cn.hutool.jwt.JWTUtil;
|
import cn.hutool.jwt.JWTUtil;
|
||||||
import com.njcn.common.pojo.constant.SecurityConstants;
|
import com.njcn.common.pojo.constant.SecurityConstants;
|
||||||
|
|
||||||
@@ -16,9 +18,9 @@ import java.util.Map;
|
|||||||
*/
|
*/
|
||||||
public class JwtUtil {
|
public class JwtUtil {
|
||||||
/**
|
/**
|
||||||
* 过期时间(单位:秒)
|
* 一天的秒数(单位:秒)
|
||||||
*/
|
*/
|
||||||
public static final long ACCESS_EXPIRE = DateUnit.DAY.getMillis() / 1000;
|
public static final long DAY_SECOND = DateUnit.DAY.getMillis() / 1000;
|
||||||
|
|
||||||
private final static String SECRET = "da3f9a7ad5a7d9dd5a7d9dd5a7d9d";
|
private final static String SECRET = "da3f9a7ad5a7d9dd5a7d9dd5a7d9d";
|
||||||
|
|
||||||
@@ -38,7 +40,7 @@ public class JwtUtil {
|
|||||||
headers.put("alg", "HS256");
|
headers.put("alg", "HS256");
|
||||||
Map<String, Object> payload = new HashMap<>();
|
Map<String, Object> payload = new HashMap<>();
|
||||||
payload.put(SecurityConstants.USER_ID, userId);
|
payload.put(SecurityConstants.USER_ID, userId);
|
||||||
payload.put("exp", Instant.now().plusSeconds(ACCESS_EXPIRE).getEpochSecond());
|
payload.put("exp", Instant.now().plusSeconds(DAY_SECOND * 2).getEpochSecond());
|
||||||
payload.put("sub", SUBJECT);
|
payload.put("sub", SUBJECT);
|
||||||
payload.put("iss", JWT_ISS);
|
payload.put("iss", JWT_ISS);
|
||||||
payload.put("iat", Instant.now().getEpochSecond());
|
payload.put("iat", Instant.now().getEpochSecond());
|
||||||
@@ -50,7 +52,12 @@ public class JwtUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isExpired(String token) {
|
public static boolean isExpired(String token) {
|
||||||
return !JWT.of(token).setKey(SECRET.getBytes(StandardCharsets.UTF_8)).validate(0);
|
JWT jwt = JWT.of(token).setKey(SECRET.getBytes(StandardCharsets.UTF_8));
|
||||||
|
JWTPayload payload = jwt.getPayload();
|
||||||
|
|
||||||
|
NumberWithFormat exp = (NumberWithFormat) payload.getClaim("exp");
|
||||||
|
long currentTime = Instant.now().getEpochSecond();
|
||||||
|
return currentTime > exp.longValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Map<String, Object> parseToken(String token) {
|
public static Map<String, Object> parseToken(String token) {
|
||||||
@@ -60,20 +67,9 @@ public class JwtUtil {
|
|||||||
.getClaimsJson();
|
.getClaimsJson();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void invalidateToken(String token) {
|
|
||||||
JWT.of(token).setKey(SECRET.getBytes(StandardCharsets.UTF_8)).setPayload("exp", Instant.now().getEpochSecond());
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getRefreshToken(String token) {
|
public static String getRefreshToken(String token) {
|
||||||
Map<String, Object> payload = JWTUtil.parseToken(token).getPayload().getClaimsJson();
|
Map<String, Object> payload = JWTUtil.parseToken(token).getPayload().getClaimsJson();
|
||||||
payload.put("exp", Instant.now().plusSeconds(ACCESS_EXPIRE * 7).getEpochSecond());
|
payload.put("exp", Instant.now().plusSeconds(DAY_SECOND * 4).getEpochSecond());
|
||||||
return JWTUtil.createToken(payload, SECRET.getBytes(StandardCharsets.UTF_8));
|
return JWTUtil.createToken(payload, SECRET.getBytes(StandardCharsets.UTF_8));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
String token = getAccessToken("123456");
|
|
||||||
System.out.println(token);
|
|
||||||
System.out.println(parseToken(token));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user