| | |
| | | package com.ruoyi.framework.config.properties;
|
| | |
|
| | | import java.util.ArrayList;
|
| | | import java.util.List;
|
| | | import java.util.Map;
|
| | | import java.util.Optional;
|
| | | import java.util.regex.Pattern;
|
| | | import com.ruoyi.framework.aspectj.lang.annotation.Anonymous;
|
| | | import org.apache.commons.lang3.RegExUtils;
|
| | | import org.springframework.beans.BeansException;
|
| | | import org.springframework.beans.factory.InitializingBean;
|
| | |
| | | import org.springframework.web.method.HandlerMethod;
|
| | | import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
|
| | | import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
|
| | | import com.ruoyi.framework.aspectj.lang.annotation.Anonymous;
|
| | |
|
| | | import java.util.*;
|
| | | import java.util.regex.Pattern;
|
| | |
|
| | | /**
|
| | | * 设置Anonymous注解允许匿名访问的url
|
| | |
| | | RequestMappingHandlerMapping mapping = applicationContext.getBean(RequestMappingHandlerMapping.class);
|
| | | Map<RequestMappingInfo, HandlerMethod> map = mapping.getHandlerMethods();
|
| | |
|
| | | // map.keySet().forEach(info -> {
|
| | | // HandlerMethod handlerMethod = map.get(info);
|
| | | //
|
| | | // // 获取方法上边的注解 替代path variable 为 *
|
| | | // Anonymous method = AnnotationUtils.findAnnotation(handlerMethod.getMethod(), Anonymous.class);
|
| | | // Optional.ofNullable(method).ifPresent(anonymous -> Objects.requireNonNull(info.getPatternsCondition().getPatterns())
|
| | | // .forEach(url -> urls.add(RegExUtils.replaceAll(url, PATTERN, ASTERISK))));
|
| | | //
|
| | | // // 获取类上边的注解, 替代path variable 为 *
|
| | | // Anonymous controller = AnnotationUtils.findAnnotation(handlerMethod.getBeanType(), Anonymous.class);
|
| | | // Optional.ofNullable(controller).ifPresent(anonymous -> Objects.requireNonNull(info.getPatternsCondition().getPatterns())
|
| | | // .forEach(url -> urls.add(RegExUtils.replaceAll(url, PATTERN, ASTERISK))));
|
| | | // });
|
| | |
|
| | | map.keySet().forEach(info -> {
|
| | | HandlerMethod handlerMethod = map.get(info);
|
| | | // 获取方法上的匿名访问注解
|
| | | Anonymous anonymous = AnnotationUtils.findAnnotation(handlerMethod.getMethod(), Anonymous.class);
|
| | | if (Objects.nonNull(anonymous)) {
|
| | | // 重点:Spring Boot 3 兼容性写法
|
| | | Set<String> patterns = new HashSet<>();
|
| | | if (info.getPatternsCondition() != null) {
|
| | | patterns.addAll(info.getPatternsCondition().getPatterns());
|
| | | }
|
| | | if (info.getPathPatternsCondition() != null) {
|
| | | patterns.addAll(info.getPathPatternsCondition().getPatternValues());
|
| | | }
|
| | |
|
| | | // 获取方法上边的注解 替代path variable 为 *
|
| | | Anonymous method = AnnotationUtils.findAnnotation(handlerMethod.getMethod(), Anonymous.class);
|
| | | Optional.ofNullable(method).ifPresent(anonymous -> info.getPatternsCondition().getPatterns()
|
| | | .forEach(url -> urls.add(RegExUtils.replaceAll(url, PATTERN, ASTERISK))));
|
| | |
|
| | | // 获取类上边的注解, 替代path variable 为 *
|
| | | Anonymous controller = AnnotationUtils.findAnnotation(handlerMethod.getBeanType(), Anonymous.class);
|
| | | Optional.ofNullable(controller).ifPresent(anonymous -> info.getPatternsCondition().getPatterns()
|
| | | .forEach(url -> urls.add(RegExUtils.replaceAll(url, PATTERN, ASTERISK))));
|
| | | patterns.forEach(url -> urls.add(RegExUtils.replaceAll(url, PATTERN, "*")));
|
| | | }
|
| | | });
|
| | | }
|
| | |
|