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