办学质量监测教学评价系统
MuSan-Li
2025-05-16 e1c997883f9cbdb6e986db986d6f787e62542196
修复未登录也可以访问接口
已修改1个文件
30 ■■■■ 文件已修改
ruoyi-common/ruoyi-common-security/src/main/java/org/ruoyi/common/security/handler/AllUrlHandler.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-security/src/main/java/org/ruoyi/common/security/handler/AllUrlHandler.java
@@ -10,6 +10,7 @@
import java.util.*;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
 * 获取所有Url配置
@@ -19,23 +20,24 @@
@Data
public class AllUrlHandler implements InitializingBean {
    private static final Pattern PATTERN = Pattern.compile("\\{(.*?)\\}");
    private List<String> urls = new ArrayList<>();
    private List<String> urls = new ArrayList<>(256);
    @Override
    public void afterPropertiesSet() {
        Set<String> set = new HashSet<>();
        RequestMappingHandlerMapping mapping = SpringUtils.getBean("requestMappingHandlerMapping", RequestMappingHandlerMapping.class);
        Map<RequestMappingInfo, HandlerMethod> 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<RequestMappingInfo, HandlerMethod> handlerMethods = mapping.getHandlerMethods();
        Pattern pattern = Pattern.compile("\\{(.*?)\\}");
        Set<String> 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));
    }
}