From 6776cc3cee36e3f69fdc1e3d3643393acea6c99d Mon Sep 17 00:00:00 2001 From: xiajiafu Date: Fri, 29 Jul 2022 11:30:44 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9PreBuildContext=20?= =?UTF-8?q?=E5=88=87=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ContextInfoBuilderAspect.java | 34 +++++++++---------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/service/ContextInfoBuilderAspect.java b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/service/ContextInfoBuilderAspect.java index 31f9484..d4d1932 100644 --- a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/service/ContextInfoBuilderAspect.java +++ b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/service/ContextInfoBuilderAspect.java @@ -1,19 +1,5 @@ package cn.axzo.framework.auth.service; -import java.lang.reflect.Method; -import java.util.Map; -import java.util.Objects; - -import javax.servlet.http.HttpServletRequest; - -import org.aspectj.lang.ProceedingJoinPoint; -import org.aspectj.lang.annotation.Around; -import org.aspectj.lang.annotation.Aspect; -import org.aspectj.lang.reflect.MethodSignature; -import org.springframework.core.annotation.Order; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; - import cn.axzo.framework.auth.AuthException; import cn.axzo.framework.auth.annotation.PreBuildContext; import cn.axzo.framework.auth.constants.AuthConstants; @@ -34,8 +20,20 @@ import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.http.HttpException; import cn.hutool.http.HttpRequest; import cn.hutool.json.JSONUtil; +import java.lang.reflect.Method; +import java.util.Map; +import java.util.Objects; +import javax.servlet.http.HttpServletRequest; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.reflect.MethodSignature; +import org.springframework.core.annotation.Order; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; @Slf4j @Aspect @@ -58,13 +56,13 @@ public class ContextInfoBuilderAspect { return (String) podNamespacePropertyDefiner.getSystemProperties().get("CUSTOM_ENV"); } - @Around(value = "@within(preBuildContext)") - public Object classHandler(ProceedingJoinPoint pjp, PreBuildContext preBuildContext) { + @Around(value = "@within(preBuildContext) && @within(requestMapping)", argNames = "pjp,preBuildContext,requestMapping") + public Object classHandler(ProceedingJoinPoint pjp, PreBuildContext preBuildContext, RequestMapping requestMapping) { return handle(pjp, preBuildContext); } - @Around(value = "@annotation(preBuildContext)") - public Object methodHandler(ProceedingJoinPoint pjp, PreBuildContext preBuildContext) { + @Around(value = "@annotation(preBuildContext) && @annotation(requestMapping)", argNames = "pjp,preBuildContext,requestMapping") + public Object methodHandler(ProceedingJoinPoint pjp, PreBuildContext preBuildContext, RequestMapping requestMapping) { return handle(pjp, preBuildContext); } From 93e2c8140d59fe21929833513baa2f45b39fa86f Mon Sep 17 00:00:00 2001 From: xiajiafu Date: Fri, 29 Jul 2022 15:40:41 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix=20PreBuildContext=20=E5=88=87=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ContextInfoBuilderAspect.java | 45 ++++++++++++++++--- 1 file changed, 40 insertions(+), 5 deletions(-) diff --git a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/service/ContextInfoBuilderAspect.java b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/service/ContextInfoBuilderAspect.java index d4d1932..0b6843c 100644 --- a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/service/ContextInfoBuilderAspect.java +++ b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/service/ContextInfoBuilderAspect.java @@ -29,9 +29,10 @@ import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.reflect.MethodSignature; import org.springframework.core.annotation.Order; -import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; @@ -56,13 +57,47 @@ public class ContextInfoBuilderAspect { return (String) podNamespacePropertyDefiner.getSystemProperties().get("CUSTOM_ENV"); } - @Around(value = "@within(preBuildContext) && @within(requestMapping)", argNames = "pjp,preBuildContext,requestMapping") - public Object classHandler(ProceedingJoinPoint pjp, PreBuildContext preBuildContext, RequestMapping requestMapping) { + @Pointcut(value = "@annotation(org.springframework.web.bind.annotation.RequestMapping)") + public void requestMapping() { + } + + @Pointcut(value = "@annotation(org.springframework.web.bind.annotation.PostMapping)") + public void postMapping() { + } + + @Pointcut(value = "@annotation(org.springframework.web.bind.annotation.GetMapping)") + public void getMapping() { + } + + @Pointcut(value = "@annotation(org.springframework.web.bind.annotation.PutMapping)") + public void putMapping() { + } + + @Pointcut(value = "@annotation(org.springframework.web.bind.annotation.DeleteMapping)") + public void deleteMapping() { + } + + @Pointcut(value = "@annotation(org.springframework.web.bind.annotation.PatchMapping)") + public void patchMapping() { + } + + @Pointcut("requestMapping() || postMapping() || getMapping() || putMapping() || deleteMapping()|| patchMapping()") + public void mappingAnnotations() { + } + + /** + * 切入含有@PreBuildContext && @RestController 注解的类 + */ + @Around(value = "@within(preBuildContext) && @within(restController)") + public Object classHandler(ProceedingJoinPoint pjp, PreBuildContext preBuildContext, RestController restController) { return handle(pjp, preBuildContext); } - @Around(value = "@annotation(preBuildContext) && @annotation(requestMapping)", argNames = "pjp,preBuildContext,requestMapping") - public Object methodHandler(ProceedingJoinPoint pjp, PreBuildContext preBuildContext, RequestMapping requestMapping) { + /** + * 切入含有@PreBuildContext && @RequestMapping/@PostMapping/@GetMapping/@PutMapping/@DeleteMapping/@PatchMapping 之一注解的方法 + */ + @Around(value = "@annotation(preBuildContext) && mappingAnnotations()") + public Object methodHandler(ProceedingJoinPoint pjp, PreBuildContext preBuildContext) { return handle(pjp, preBuildContext); }