手动判断access是否过期

This commit is contained in:
2024-07-29 11:48:52 +08:00
parent 9d4215afb5
commit da387cc39d

View File

@@ -1,5 +1,6 @@
package com.njcn.gateway.filter; package com.njcn.gateway.filter;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
@@ -29,6 +30,7 @@ import reactor.core.publisher.Mono;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
@@ -73,6 +75,11 @@ public class AuthGlobalFilter implements GlobalFilter, Ordered {
JSONObject jsonObject = JSONUtil.parseObj(payload); JSONObject jsonObject = JSONUtil.parseObj(payload);
String userIndex = jsonObject.getStr(SecurityConstants.USER_INDEX_KEY); String userIndex = jsonObject.getStr(SecurityConstants.USER_INDEX_KEY);
String jti = jsonObject.getStr(SecurityConstants.JWT_JTI); String jti = jsonObject.getStr(SecurityConstants.JWT_JTI);
String exp = jsonObject.getStr(SecurityConstants.JWT_EXP);
LocalDateTime expTime = LocalDateTimeUtil.of(Long.parseLong(exp + "000"));
if(expTime.isAfter(LocalDateTimeUtil.now())){
return ResponseUtils.writeErrorInfo(response, GateWayEnum.ACCESS_TOKEN_EXPIRE_JWT);
}
String blackUserKey = SecurityConstants.TOKEN_BLACKLIST_PREFIX + userIndex; String blackUserKey = SecurityConstants.TOKEN_BLACKLIST_PREFIX + userIndex;
List<UserTokenInfo> blackUsers = (List<UserTokenInfo>) redisUtil.getObjectByKey(blackUserKey); List<UserTokenInfo> blackUsers = (List<UserTokenInfo>) redisUtil.getObjectByKey(blackUserKey);
if (CollectionUtils.isNotEmpty(blackUsers)) { if (CollectionUtils.isNotEmpty(blackUsers)) {
@@ -96,4 +103,5 @@ public class AuthGlobalFilter implements GlobalFilter, Ordered {
public int getOrder() { public int getOrder() {
return 0; return 0;
} }
} }