From 04ac2c8d3c4b06d9e40acd7dbf3b2615d23f16ab Mon Sep 17 00:00:00 2001 From: gaoqr <13665037151@163.com> Date: Fri, 21 Jun 2024 14:21:29 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E6=B8=85=E7=A9=BA=E6=9C=AC=E5=9C=B0?= =?UTF-8?q?=E7=BC=93=E5=AD=98=E6=96=B9=E6=B3=95=E5=90=8D=E4=BC=98=E5=8C=96?= =?UTF-8?q?=EF=BC=9B=202=E3=80=81=E5=A2=9E=E5=8A=A0oauth2=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E8=BF=87=E6=9C=9F=E6=97=B6=E9=97=B4=E6=96=B9=E6=B3=95?= =?UTF-8?q?=EF=BC=8C=E7=94=A8expire=E6=9B=BF=E4=BB=A3set=E4=B8=8D=E7=94=A8?= =?UTF-8?q?=E6=AF=8F=E6=AC=A1=E9=87=8D=E6=96=B0=E8=AE=BE=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/service/SecurityFrameworkService.java | 4 ++-- .../core/service/SecurityFrameworkServiceImpl.java | 2 +- .../SystemPermissionRefreshRedisListener.java | 2 +- .../dal/redis/oauth2/OAuth2AccessTokenRedisDAO.java | 11 +++++++++++ .../system/service/oauth2/OAuth2TokenServiceImpl.java | 5 +++-- 5 files changed, 18 insertions(+), 6 deletions(-) diff --git a/cf-framework/cf-spring-boot-starter-security/src/main/java/com/cf/imes/framework/security/core/service/SecurityFrameworkService.java b/cf-framework/cf-spring-boot-starter-security/src/main/java/com/cf/imes/framework/security/core/service/SecurityFrameworkService.java index 13b1613cb..4de2f7e98 100644 --- a/cf-framework/cf-spring-boot-starter-security/src/main/java/com/cf/imes/framework/security/core/service/SecurityFrameworkService.java +++ b/cf-framework/cf-spring-boot-starter-security/src/main/java/com/cf/imes/framework/security/core/service/SecurityFrameworkService.java @@ -24,11 +24,11 @@ public interface SecurityFrameworkService { boolean hasAnyPermissions(String... permissions); /** - * 清空本地缓存 + * 清空本地权限缓存 * * @param */ - void invalidateAll(); + void invalidateAllPermissionsCache(); /** * 判断是否有角色 diff --git a/cf-framework/cf-spring-boot-starter-security/src/main/java/com/cf/imes/framework/security/core/service/SecurityFrameworkServiceImpl.java b/cf-framework/cf-spring-boot-starter-security/src/main/java/com/cf/imes/framework/security/core/service/SecurityFrameworkServiceImpl.java index ec0885c00..2e2486de9 100644 --- a/cf-framework/cf-spring-boot-starter-security/src/main/java/com/cf/imes/framework/security/core/service/SecurityFrameworkServiceImpl.java +++ b/cf-framework/cf-spring-boot-starter-security/src/main/java/com/cf/imes/framework/security/core/service/SecurityFrameworkServiceImpl.java @@ -66,7 +66,7 @@ public class SecurityFrameworkServiceImpl implements SecurityFrameworkService { } @Override - public void invalidateAll() { + public void invalidateAllPermissionsCache() { hasAnyPermissionsCache.invalidateAll(); } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/redis/listener/SystemPermissionRefreshRedisListener.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/redis/listener/SystemPermissionRefreshRedisListener.java index b546ebc45..a9fdfb661 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/redis/listener/SystemPermissionRefreshRedisListener.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/redis/listener/SystemPermissionRefreshRedisListener.java @@ -25,6 +25,6 @@ public class SystemPermissionRefreshRedisListener extends AbstractRedisSimpleMes @Override public void onMessage(Message message, byte[] bytes) { - securityFrameworkService.invalidateAll(); + securityFrameworkService.invalidateAllPermissionsCache(); } } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/redis/oauth2/OAuth2AccessTokenRedisDAO.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/redis/oauth2/OAuth2AccessTokenRedisDAO.java index cd0f10c8e..01a5fb71d 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/redis/oauth2/OAuth2AccessTokenRedisDAO.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/redis/oauth2/OAuth2AccessTokenRedisDAO.java @@ -52,6 +52,17 @@ public class OAuth2AccessTokenRedisDAO { stringRedisTemplate.delete(redisKeys); } + /** + * 设置过期时间 + * + * @param accessToken 访问令牌 + * @param timeout 过期时间 + * @param unit 时间单位 + */ + public void expire(String accessToken, long timeout, final TimeUnit unit) { + stringRedisTemplate.expire(formatKey(accessToken), timeout, unit); + } + private static String formatKey(String accessToken) { return String.format(RedisKeyConstants.OAUTH2_ACCESS_TOKEN, accessToken); } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/oauth2/OAuth2TokenServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/oauth2/OAuth2TokenServiceImpl.java index 254144e90..eadc6b03f 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/oauth2/OAuth2TokenServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/oauth2/OAuth2TokenServiceImpl.java @@ -21,6 +21,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.List; +import java.util.concurrent.TimeUnit; import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception0; import static com.cf.imes.framework.common.util.collection.CollectionUtils.convertSet; @@ -111,7 +112,7 @@ public class OAuth2TokenServiceImpl implements OAuth2TokenService { if(accessTokenDO != null){ // 有令牌的校验,代表有接口访问,延长令牌的过期时间(30分钟) - oauth2AccessTokenRedisDAO.set(accessTokenDO.setExpiresTime(LocalDateTime.now().plusSeconds(1800))); + oauth2AccessTokenRedisDAO.expire(accessToken, 1800, TimeUnit.SECONDS); } return accessTokenDO; } @@ -124,7 +125,7 @@ public class OAuth2TokenServiceImpl implements OAuth2TokenService { } // if (DateUtils.isExpired(accessTokenDO.getExpiresTime())) { // throw exception0(GlobalErrorCodeConstants.UNAUTHORIZED.getCode(), "访问令牌已过期"); -// } + return accessTokenDO; }