diff --git a/pom.xml b/pom.xml index 062eca9..6fd7e9c 100644 --- a/pom.xml +++ b/pom.xml @@ -5,14 +5,14 @@ com.ruoyi ruoyi - 3.8.7.3 + 3.8.7.3.1 ruoyi http://www.ruoyi.vip 若依管理系统 - 3.8.7.3 + 3.8.7.3.1 UTF-8 UTF-8 17 diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml index b0a73f8..433ef13 100644 --- a/ruoyi-admin/pom.xml +++ b/ruoyi-admin/pom.xml @@ -4,7 +4,7 @@ ruoyi com.ruoyi - 3.8.7.3 + 3.8.7.3.1 4.0.0 jar diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java index c490df1..95cba94 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java @@ -3,14 +3,16 @@ package com.ruoyi.web.controller.common; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.concurrent.TimeUnit; -import jakarta.annotation.Resource; + import javax.imageio.ImageIO; -import jakarta.servlet.http.HttpServletResponse; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.FastByteArrayOutputStream; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; + import com.google.code.kaptcha.Producer; +import com.ruoyi.common.annotation.Anonymous; import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.constant.CacheConstants; import com.ruoyi.common.constant.Constants; @@ -20,6 +22,9 @@ import com.ruoyi.common.utils.sign.Base64; import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.system.service.ISysConfigService; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; + /** * 验证码操作处理 * @@ -42,6 +47,7 @@ public class CaptchaController /** * 生成验证码 */ + @Anonymous @GetMapping("/captchaImage") public AjaxResult getCode(HttpServletResponse response) throws IOException { diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml index a81660c..29aa440 100644 --- a/ruoyi-common/pom.xml +++ b/ruoyi-common/pom.xml @@ -4,7 +4,7 @@ ruoyi com.ruoyi - 3.8.7.3 + 3.8.7.3.1 4.0.0 diff --git a/ruoyi-framework/pom.xml b/ruoyi-framework/pom.xml index 4ec17fd..3cd1d09 100644 --- a/ruoyi-framework/pom.xml +++ b/ruoyi-framework/pom.xml @@ -5,7 +5,7 @@ ruoyi com.ruoyi - 3.8.7.3 + 3.8.7.3.1 4.0.0 diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java index 9de153c..ab2484e 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java @@ -16,6 +16,7 @@ import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; import org.springframework.security.web.authentication.logout.LogoutFilter; import org.springframework.web.filter.CorsFilter; + import com.ruoyi.framework.config.properties.PermitAllUrlProperties; import com.ruoyi.framework.security.filter.JwtAuthenticationTokenFilter; import com.ruoyi.framework.security.handle.AuthenticationEntryPointImpl; diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/PermitAllUrlProperties.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/PermitAllUrlProperties.java index ccd0a35..090cc87 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/PermitAllUrlProperties.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/PermitAllUrlProperties.java @@ -1,11 +1,12 @@ package com.ruoyi.framework.config.properties; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Objects; -import java.util.Optional; import java.util.regex.Pattern; + import org.apache.commons.lang3.RegExUtils; import org.springframework.beans.BeansException; import org.springframework.beans.factory.InitializingBean; @@ -16,7 +17,9 @@ import org.springframework.core.annotation.AnnotationUtils; 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.common.annotation.Anonymous; +import com.ruoyi.common.utils.spring.SpringUtils; /** * 设置Anonymous注解允许匿名访问的url @@ -24,8 +27,7 @@ import com.ruoyi.common.annotation.Anonymous; * @author ruoyi */ @Configuration -public class PermitAllUrlProperties implements InitializingBean, ApplicationContextAware -{ +public class PermitAllUrlProperties implements InitializingBean, ApplicationContextAware { private static final Pattern PATTERN = Pattern.compile("\\{(.*?)\\}"); private ApplicationContext applicationContext; @@ -34,42 +36,56 @@ public class PermitAllUrlProperties implements InitializingBean, ApplicationCont public String ASTERISK = "*"; - @Override - public void afterPropertiesSet() - { - RequestMappingHandlerMapping mapping = applicationContext.getBean(RequestMappingHandlerMapping.class); - Map map = mapping.getHandlerMethods(); + static class Pair { + public RequestMappingInfo first; + public Anonymous second; - 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.getPathPatternsCondition().getPatternValues()) // - .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.getPathPatternsCondition().getPatternValues()) - .forEach(url -> urls.add(RegExUtils.replaceAll(url, PATTERN, ASTERISK)))); - }); + public Pair(RequestMappingInfo first, Anonymous second) { + this.first = first; + this.second = second; + } } @Override - public void setApplicationContext(ApplicationContext context) throws BeansException - { + public void afterPropertiesSet() { + RequestMappingHandlerMapping mapping = applicationContext.getBean(RequestMappingHandlerMapping.class); + Map map = mapping.getHandlerMethods(); + String matching = SpringUtils.getRequiredProperty("spring.mvc.pathmatch.matching-strategy").toLowerCase(); + map.keySet() + .stream() + .flatMap(info -> { + HandlerMethod handlerMethod = map.get(info); + // 获取方法上边的注解 替代path variable 为 * + Anonymous method = AnnotationUtils.findAnnotation(handlerMethod.getMethod(), Anonymous.class); + // 获取类上边的注解, 替代path variable 为 * + Anonymous controller = AnnotationUtils.findAnnotation(handlerMethod.getBeanType(), Anonymous.class); + return Arrays.stream(new Pair[] { new Pair(info, method), new Pair(info, controller) }); + }) + .filter(pair -> pair.second != null) + .flatMap(pair -> { + if ("ant_path_matcher".equals(matching)) { + return Objects.requireNonNull(pair.first.getPatternsCondition().getPatterns()).stream(); + } else if ("path_pattern_parser".equals(matching)) { + return Objects.requireNonNull(pair.first.getPathPatternsCondition().getPatternValues()) + .stream(); + } else { + return Objects.requireNonNull(pair.first.getPatternsCondition().getPatterns()).stream(); + } + }) + .map(url -> RegExUtils.replaceAll(url, PATTERN, ASTERISK)) + .forEach(urls::add); + } + + @Override + public void setApplicationContext(ApplicationContext context) throws BeansException { this.applicationContext = context; } - public List getUrls() - { + public List getUrls() { return urls; } - public void setUrls(List urls) - { + public void setUrls(List urls) { this.urls = urls; } } diff --git a/ruoyi-generator/pom.xml b/ruoyi-generator/pom.xml index 64b0190..18f0576 100644 --- a/ruoyi-generator/pom.xml +++ b/ruoyi-generator/pom.xml @@ -5,7 +5,7 @@ ruoyi com.ruoyi - 3.8.7.3 + 3.8.7.3.1 4.0.0 diff --git a/ruoyi-quartz/pom.xml b/ruoyi-quartz/pom.xml index 426bc26..68fbef6 100644 --- a/ruoyi-quartz/pom.xml +++ b/ruoyi-quartz/pom.xml @@ -5,7 +5,7 @@ ruoyi com.ruoyi - 3.8.7.3 + 3.8.7.3.1 4.0.0 diff --git a/ruoyi-system/pom.xml b/ruoyi-system/pom.xml index 750c59d..c474f73 100644 --- a/ruoyi-system/pom.xml +++ b/ruoyi-system/pom.xml @@ -5,7 +5,7 @@ ruoyi com.ruoyi - 3.8.7.3 + 3.8.7.3.1 4.0.0