From 6a8b93548a088d7bb5711cca25452074beb4d641 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=BE=99?= Date: Fri, 7 Feb 2025 17:16:28 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat=EF=BC=9A(hotfix)=20controller=E5=A4=84?= =?UTF-8?q?=E7=90=86=E5=AE=8C=E5=90=8E=EF=BC=8C=E6=8A=8AthreadLocal?= =?UTF-8?q?=E7=BB=99=E6=B8=85=E7=A9=BA=E6=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../aop/DataPermissionInterceptor.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/axzo-common-data-permission/src/main/java/cn/axzo/framework/datapermission/aop/DataPermissionInterceptor.java b/axzo-common-data-permission/src/main/java/cn/axzo/framework/datapermission/aop/DataPermissionInterceptor.java index 0a0937d..f3d510d 100644 --- a/axzo-common-data-permission/src/main/java/cn/axzo/framework/datapermission/aop/DataPermissionInterceptor.java +++ b/axzo-common-data-permission/src/main/java/cn/axzo/framework/datapermission/aop/DataPermissionInterceptor.java @@ -82,7 +82,7 @@ public class DataPermissionInterceptor { @SneakyThrows public Object classHandler(ProceedingJoinPoint pjp, DataPermission dataPermission, RestController restController) { handle(dataPermission); - return pjp.proceed(pjp.getArgs()); + return proceed(pjp); } /** @@ -92,7 +92,17 @@ public class DataPermissionInterceptor { @SneakyThrows public Object methodHandler(ProceedingJoinPoint pjp, DataPermission dataPermission) { handle(dataPermission); - return pjp.proceed(pjp.getArgs()); + return proceed(pjp); + } + + private static Object proceed(ProceedingJoinPoint pjp) throws Throwable { + Object result; + try { + result = pjp.proceed(pjp.getArgs()); + } finally { + ContextInfoHolder.clear(); + } + return result; } @AfterThrowing(value = "(@within(cn.axzo.framework.datapermission.annotation.DataPermission) && @within(org.springframework.web.bind.annotation.RestController)) " + From d199b7cbe8a5510e64e83d5fa541479ab9574630 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=BE=99?= Date: Fri, 7 Feb 2025 17:21:23 +0800 Subject: [PATCH 2/3] =?UTF-8?q?feat=EF=BC=9A(hotfix)=20controller=E5=A4=84?= =?UTF-8?q?=E7=90=86=E5=AE=8C=E5=90=8E=EF=BC=8C=E6=8A=8AthreadLocal?= =?UTF-8?q?=E7=BB=99=E6=B8=85=E7=A9=BA=E6=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../aop/DataPermissionInterceptor.java | 18 +++++++++--------- .../context/DataPermissionContextHolder.java | 3 +++ 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/axzo-common-data-permission/src/main/java/cn/axzo/framework/datapermission/aop/DataPermissionInterceptor.java b/axzo-common-data-permission/src/main/java/cn/axzo/framework/datapermission/aop/DataPermissionInterceptor.java index f3d510d..2fb92d4 100644 --- a/axzo-common-data-permission/src/main/java/cn/axzo/framework/datapermission/aop/DataPermissionInterceptor.java +++ b/axzo-common-data-permission/src/main/java/cn/axzo/framework/datapermission/aop/DataPermissionInterceptor.java @@ -17,7 +17,10 @@ import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.aspectj.lang.ProceedingJoinPoint; -import org.aspectj.lang.annotation.*; +import org.aspectj.lang.annotation.AfterThrowing; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Pointcut; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.core.annotation.Order; @@ -31,8 +34,6 @@ import java.util.Objects; import java.util.Optional; import java.util.stream.Collectors; -import static cn.axzo.framework.datapermission.context.DataPermissionContextHolder.DATA_PERMISSION_HEADER; - /** * 解析数据权限规则,把解析后的数据放置在上下文中DataPermissionContext */ @@ -81,8 +82,7 @@ public class DataPermissionInterceptor { @Around(value = "@within(dataPermission) && @within(restController)") @SneakyThrows public Object classHandler(ProceedingJoinPoint pjp, DataPermission dataPermission, RestController restController) { - handle(dataPermission); - return proceed(pjp); + return proceed(pjp, dataPermission); } /** @@ -91,16 +91,16 @@ public class DataPermissionInterceptor { @Around(value = "@annotation(dataPermission) && mappingAnnotations()") @SneakyThrows public Object methodHandler(ProceedingJoinPoint pjp, DataPermission dataPermission) { - handle(dataPermission); - return proceed(pjp); + return proceed(pjp, dataPermission); } - private static Object proceed(ProceedingJoinPoint pjp) throws Throwable { + private Object proceed(ProceedingJoinPoint pjp, DataPermission dataPermission) throws Throwable { Object result; try { + handle(dataPermission); result = pjp.proceed(pjp.getArgs()); } finally { - ContextInfoHolder.clear(); + DataPermissionContextHolder.clear(); } return result; } diff --git a/axzo-common-data-permission/src/main/java/cn/axzo/framework/datapermission/context/DataPermissionContextHolder.java b/axzo-common-data-permission/src/main/java/cn/axzo/framework/datapermission/context/DataPermissionContextHolder.java index 5a4af6a..f5b6e7b 100644 --- a/axzo-common-data-permission/src/main/java/cn/axzo/framework/datapermission/context/DataPermissionContextHolder.java +++ b/axzo-common-data-permission/src/main/java/cn/axzo/framework/datapermission/context/DataPermissionContextHolder.java @@ -24,6 +24,9 @@ public class DataPermissionContextHolder { DATA_PERMISSION_CONTEXT.set(dataPermission); } + public static void clear() { + DATA_PERMISSION_CONTEXT.remove(); + } @Data @Builder From 82556dd40e1cb94d3fcaa46cf42a3fb4fee40801 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=BE=99?= Date: Fri, 7 Feb 2025 18:01:54 +0800 Subject: [PATCH 3/3] =?UTF-8?q?feat=EF=BC=9A(hotfix)=20controller=E5=A4=84?= =?UTF-8?q?=E7=90=86=E5=AE=8C=E5=90=8E=EF=BC=8C=E6=8A=8AthreadLocal?= =?UTF-8?q?=E7=BB=99=E6=B8=85=E7=A9=BA=E6=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datapermission/aop/DataPermissionInterceptor.java | 2 +- .../datapermission/context/DataPermissionContextHolder.java | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/axzo-common-data-permission/src/main/java/cn/axzo/framework/datapermission/aop/DataPermissionInterceptor.java b/axzo-common-data-permission/src/main/java/cn/axzo/framework/datapermission/aop/DataPermissionInterceptor.java index 2fb92d4..b7320a3 100644 --- a/axzo-common-data-permission/src/main/java/cn/axzo/framework/datapermission/aop/DataPermissionInterceptor.java +++ b/axzo-common-data-permission/src/main/java/cn/axzo/framework/datapermission/aop/DataPermissionInterceptor.java @@ -100,7 +100,7 @@ public class DataPermissionInterceptor { handle(dataPermission); result = pjp.proceed(pjp.getArgs()); } finally { - DataPermissionContextHolder.clear(); + DataPermissionContextHolder.remove(); } return result; } diff --git a/axzo-common-data-permission/src/main/java/cn/axzo/framework/datapermission/context/DataPermissionContextHolder.java b/axzo-common-data-permission/src/main/java/cn/axzo/framework/datapermission/context/DataPermissionContextHolder.java index f5b6e7b..5a4af6a 100644 --- a/axzo-common-data-permission/src/main/java/cn/axzo/framework/datapermission/context/DataPermissionContextHolder.java +++ b/axzo-common-data-permission/src/main/java/cn/axzo/framework/datapermission/context/DataPermissionContextHolder.java @@ -24,9 +24,6 @@ public class DataPermissionContextHolder { DATA_PERMISSION_CONTEXT.set(dataPermission); } - public static void clear() { - DATA_PERMISSION_CONTEXT.remove(); - } @Data @Builder