From e1c997883f9cbdb6e986db986d6f787e62542196 Mon Sep 17 00:00:00 2001 From: MuSan-Li <446796145@qq.com> Date: Fri, 16 May 2025 21:01:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9C=AA=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E4=B9=9F=E5=8F=AF=E4=BB=A5=E8=AE=BF=E9=97=AE=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../security/handler/AllUrlHandler.java | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/ruoyi-common/ruoyi-common-security/src/main/java/org/ruoyi/common/security/handler/AllUrlHandler.java b/ruoyi-common/ruoyi-common-security/src/main/java/org/ruoyi/common/security/handler/AllUrlHandler.java index 4be94b26..6537d392 100644 --- a/ruoyi-common/ruoyi-common-security/src/main/java/org/ruoyi/common/security/handler/AllUrlHandler.java +++ b/ruoyi-common/ruoyi-common-security/src/main/java/org/ruoyi/common/security/handler/AllUrlHandler.java @@ -10,6 +10,7 @@ import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandl import java.util.*; import java.util.regex.Pattern; +import java.util.stream.Collectors; /** * 获取所有Url配置 @@ -19,23 +20,24 @@ import java.util.regex.Pattern; @Data public class AllUrlHandler implements InitializingBean { - private static final Pattern PATTERN = Pattern.compile("\\{(.*?)\\}"); - - private List urls = new ArrayList<>(); + private List urls = new ArrayList<>(256); @Override public void afterPropertiesSet() { - Set set = new HashSet<>(); - RequestMappingHandlerMapping mapping = SpringUtils.getBean("requestMappingHandlerMapping", RequestMappingHandlerMapping.class); - Map map = mapping.getHandlerMethods(); - map.keySet().forEach(info -> { - // 获取注解上边的 path 替代 path variable 为 * - if(info.getPathPatternsCondition()!=null){ - Objects.requireNonNull(info.getPathPatternsCondition().getPatterns()) - .forEach(url -> set.add(ReUtil.replaceAll(url.getPatternString(), PATTERN, "*"))); - } - }); - urls.addAll(set); + String name = "requestMappingHandlerMapping"; + RequestMappingHandlerMapping mapping = SpringUtils.getBean(name, RequestMappingHandlerMapping.class); + + Map handlerMethods = mapping.getHandlerMethods(); + + Pattern pattern = Pattern.compile("\\{(.*?)\\}"); + + Set handlerSet = handlerMethods.keySet().stream() + .flatMap(info -> info.getPatternsCondition().getPatterns().stream()) + .collect(Collectors.toSet()); + + // 获取注解上边的 path 替代 path variable 为 * + handlerSet.stream().map(path -> ReUtil.replaceAll(path, pattern, "*")) + .forEach(item -> urls.add(item)); } }