From a392fab78222db8f05933e398d8b0541aed07651 Mon Sep 17 00:00:00 2001 From: Charles7c Date: Tue, 22 Jul 2025 20:53:59 +0800 Subject: [PATCH] =?UTF-8?q?feat(core):=20=E6=96=B0=E5=A2=9E=20OrderedConst?= =?UTF-8?q?ants=20=E7=BB=9F=E4=B8=80=E7=99=BB=E8=AE=B0=E8=BF=87=E6=BB=A4?= =?UTF-8?q?=E5=99=A8=E5=92=8C=E6=8B=A6=E6=88=AA=E5=99=A8=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E9=A1=BA=E5=BA=8F=E5=B8=B8=E9=87=8F=EF=BC=8C=E5=B9=B6=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E7=9B=B8=E5=85=B3=E8=BF=87=E6=BB=A4=E5=99=A8=E5=92=8C?= =?UTF-8?q?=E6=8B=A6=E6=88=AA=E5=99=A8=E9=A1=BA=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SaTokenAutoConfiguration.java | 5 +- .../core/constant/OrderedConstants.java | 79 +++++++++++++++++++ .../TenantWebMvcAutoConfiguration.java | 4 +- .../autoconfigure/LogAutoConfiguration.java | 9 ++- .../starter/log/filter/LogFilter.java | 8 +- .../autoconfigure/LogAutoConfiguration.java | 12 ++- .../autoconfigure/XssAutoConfiguration.java | 4 +- .../autoconfigure/TraceAutoConfiguration.java | 12 +-- 8 files changed, 111 insertions(+), 22 deletions(-) create mode 100644 continew-starter-core/src/main/java/top/continew/starter/core/constant/OrderedConstants.java diff --git a/continew-starter-auth/continew-starter-auth-satoken/src/main/java/top/continew/starter/auth/satoken/autoconfigure/SaTokenAutoConfiguration.java b/continew-starter-auth/continew-starter-auth-satoken/src/main/java/top/continew/starter/auth/satoken/autoconfigure/SaTokenAutoConfiguration.java index b5f46f9c..c277473a 100644 --- a/continew-starter-auth/continew-starter-auth-satoken/src/main/java/top/continew/starter/auth/satoken/autoconfigure/SaTokenAutoConfiguration.java +++ b/continew-starter-auth/continew-starter-auth-satoken/src/main/java/top/continew/starter/auth/satoken/autoconfigure/SaTokenAutoConfiguration.java @@ -36,6 +36,7 @@ import org.springframework.context.annotation.PropertySource; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import top.continew.starter.auth.satoken.autoconfigure.dao.SaTokenDaoConfiguration; +import top.continew.starter.core.constant.OrderedConstants; import top.continew.starter.core.constant.PropertiesConstants; import top.continew.starter.core.constant.StringConstants; import top.continew.starter.core.util.GeneralPropertySourceFactory; @@ -61,7 +62,9 @@ public class SaTokenAutoConfiguration implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { - registry.addInterceptor(SpringUtil.getBean(SaInterceptor.class)).addPathPatterns(StringConstants.PATH_PATTERN); + registry.addInterceptor(SpringUtil.getBean(SaInterceptor.class)) + .addPathPatterns(StringConstants.PATH_PATTERN) + .order(OrderedConstants.Interceptor.AUTH_INTERCEPTOR); } /** diff --git a/continew-starter-core/src/main/java/top/continew/starter/core/constant/OrderedConstants.java b/continew-starter-core/src/main/java/top/continew/starter/core/constant/OrderedConstants.java new file mode 100644 index 00000000..1ea1f239 --- /dev/null +++ b/continew-starter-core/src/main/java/top/continew/starter/core/constant/OrderedConstants.java @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved. + *

+ * Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *

+ * http://www.gnu.org/licenses/lgpl.html + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package top.continew.starter.core.constant; + +import org.springframework.core.Ordered; + +/** + * 过滤器和拦截器相关顺序常量 + * + * @author Charles7c + * @since 2.13.3 + */ +public class OrderedConstants { + + /** + * 过滤器顺序 + */ + public static final class Filter { + + /** + * 链路追踪过滤器顺序 + */ + public static final int TRACE_FILTER = Ordered.HIGHEST_PRECEDENCE + 100; + + /** + * XSS 过滤器顺序 + */ + public static final int XSS_FILTER = Ordered.HIGHEST_PRECEDENCE + 200; + + /** + * 日志过滤器顺序 + */ + public static final int LOG_FILTER = Ordered.LOWEST_PRECEDENCE - 100; + + private Filter() { + } + } + + /** + * 拦截器顺序 + */ + public static final class Interceptor { + + /** + * 租户拦截器顺序 + */ + public static final int TENANT_INTERCEPTOR = Ordered.HIGHEST_PRECEDENCE + 100; + + /** + * 认证拦截器顺序 + */ + public static final int AUTH_INTERCEPTOR = Ordered.HIGHEST_PRECEDENCE + 200; + + /** + * 日志拦截器顺序 + */ + public static final int LOG_INTERCEPTOR = Ordered.LOWEST_PRECEDENCE - 100; + + private Interceptor() { + } + } + + private OrderedConstants() { + } +} \ No newline at end of file diff --git a/continew-starter-extension/continew-starter-extension-tenant/continew-starter-extension-tenant-core/src/main/java/top/continew/starter/extension/tenant/autoconfigure/TenantWebMvcAutoConfiguration.java b/continew-starter-extension/continew-starter-extension-tenant/continew-starter-extension-tenant-core/src/main/java/top/continew/starter/extension/tenant/autoconfigure/TenantWebMvcAutoConfiguration.java index 58ba0cda..5d359310 100644 --- a/continew-starter-extension/continew-starter-extension-tenant/continew-starter-extension-tenant-core/src/main/java/top/continew/starter/extension/tenant/autoconfigure/TenantWebMvcAutoConfiguration.java +++ b/continew-starter-extension/continew-starter-extension-tenant/continew-starter-extension-tenant-core/src/main/java/top/continew/starter/extension/tenant/autoconfigure/TenantWebMvcAutoConfiguration.java @@ -19,9 +19,9 @@ package top.continew.starter.extension.tenant.autoconfigure; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.core.Ordered; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import top.continew.starter.core.constant.OrderedConstants; import top.continew.starter.extension.tenant.annotation.ConditionalOnEnabledTenant; import top.continew.starter.extension.tenant.config.TenantProvider; import top.continew.starter.extension.tenant.interceptor.TenantInterceptor; @@ -49,6 +49,6 @@ public class TenantWebMvcAutoConfiguration implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new TenantInterceptor(tenantProperties, tenantProvider)) - .order(Ordered.HIGHEST_PRECEDENCE); + .order(OrderedConstants.Interceptor.TENANT_INTERCEPTOR); } } diff --git a/continew-starter-log/continew-starter-log-aop/src/main/java/top/continew/starter/log/autoconfigure/LogAutoConfiguration.java b/continew-starter-log/continew-starter-log-aop/src/main/java/top/continew/starter/log/autoconfigure/LogAutoConfiguration.java index 00498a90..0e2a926c 100644 --- a/continew-starter-log/continew-starter-log-aop/src/main/java/top/continew/starter/log/autoconfigure/LogAutoConfiguration.java +++ b/continew-starter-log/continew-starter-log-aop/src/main/java/top/continew/starter/log/autoconfigure/LogAutoConfiguration.java @@ -22,8 +22,10 @@ import org.slf4j.LoggerFactory; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import top.continew.starter.core.constant.OrderedConstants; import top.continew.starter.log.annotation.ConditionalOnEnabledLog; import top.continew.starter.log.aspect.AccessLogAspect; import top.continew.starter.log.aspect.LogAspect; @@ -61,8 +63,11 @@ public class LogAutoConfiguration { */ @Bean @ConditionalOnMissingBean - public LogFilter logFilter() { - return new LogFilter(logProperties); + public FilterRegistrationBean logFilter() { + FilterRegistrationBean registrationBean = new FilterRegistrationBean<>(); + registrationBean.setFilter(new LogFilter(logProperties)); + registrationBean.setOrder(OrderedConstants.Filter.LOG_FILTER); + return registrationBean; } /** diff --git a/continew-starter-log/continew-starter-log-core/src/main/java/top/continew/starter/log/filter/LogFilter.java b/continew-starter-log/continew-starter-log-core/src/main/java/top/continew/starter/log/filter/LogFilter.java index 334efea9..8ad9ee72 100644 --- a/continew-starter-log/continew-starter-log-core/src/main/java/top/continew/starter/log/filter/LogFilter.java +++ b/continew-starter-log/continew-starter-log-core/src/main/java/top/continew/starter/log/filter/LogFilter.java @@ -22,7 +22,6 @@ import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.springframework.boot.autoconfigure.web.ServerProperties; -import org.springframework.core.Ordered; import org.springframework.lang.NonNull; import org.springframework.web.filter.OncePerRequestFilter; import top.continew.starter.core.wrapper.RepeatReadRequestWrapper; @@ -40,7 +39,7 @@ import java.net.URISyntaxException; * @author echo * @since 1.1.0 */ -public class LogFilter extends OncePerRequestFilter implements Ordered { +public class LogFilter extends OncePerRequestFilter { private final LogProperties logProperties; @@ -48,11 +47,6 @@ public class LogFilter extends OncePerRequestFilter implements Ordered { this.logProperties = logProperties; } - @Override - public int getOrder() { - return Ordered.LOWEST_PRECEDENCE - 10; - } - @Override protected void doFilterInternal(@NonNull HttpServletRequest request, @NonNull HttpServletResponse response, diff --git a/continew-starter-log/continew-starter-log-interceptor/src/main/java/top/continew/starter/log/autoconfigure/LogAutoConfiguration.java b/continew-starter-log/continew-starter-log-interceptor/src/main/java/top/continew/starter/log/autoconfigure/LogAutoConfiguration.java index 4b01f27f..01861b50 100644 --- a/continew-starter-log/continew-starter-log-interceptor/src/main/java/top/continew/starter/log/autoconfigure/LogAutoConfiguration.java +++ b/continew-starter-log/continew-starter-log-interceptor/src/main/java/top/continew/starter/log/autoconfigure/LogAutoConfiguration.java @@ -22,10 +22,12 @@ import org.slf4j.LoggerFactory; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import top.continew.starter.core.constant.OrderedConstants; import top.continew.starter.core.constant.StringConstants; import top.continew.starter.log.annotation.ConditionalOnEnabledLog; import top.continew.starter.log.dao.LogDao; @@ -59,7 +61,8 @@ public class LogAutoConfiguration implements WebMvcConfigurer { public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new LogInterceptor(logProperties, logHandler(), logDao())) .addPathPatterns(StringConstants.PATH_PATTERN) - .excludePathPatterns(logProperties.getExcludePatterns()); + .excludePathPatterns(logProperties.getExcludePatterns()) + .order(OrderedConstants.Interceptor.LOG_INTERCEPTOR); } /** @@ -67,8 +70,11 @@ public class LogAutoConfiguration implements WebMvcConfigurer { */ @Bean @ConditionalOnMissingBean - public LogFilter logFilter() { - return new LogFilter(logProperties); + public FilterRegistrationBean logFilter() { + FilterRegistrationBean registrationBean = new FilterRegistrationBean<>(); + registrationBean.setFilter(new LogFilter(logProperties)); + registrationBean.setOrder(OrderedConstants.Filter.LOG_FILTER); + return registrationBean; } /** diff --git a/continew-starter-security/continew-starter-security-xss/src/main/java/top/continew/starter/security/xss/autoconfigure/XssAutoConfiguration.java b/continew-starter-security/continew-starter-security-xss/src/main/java/top/continew/starter/security/xss/autoconfigure/XssAutoConfiguration.java index 9a4099fb..7eda6afe 100644 --- a/continew-starter-security/continew-starter-security-xss/src/main/java/top/continew/starter/security/xss/autoconfigure/XssAutoConfiguration.java +++ b/continew-starter-security/continew-starter-security-xss/src/main/java/top/continew/starter/security/xss/autoconfigure/XssAutoConfiguration.java @@ -25,6 +25,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplicat import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; +import top.continew.starter.core.constant.OrderedConstants; import top.continew.starter.core.constant.PropertiesConstants; import top.continew.starter.security.xss.filter.XssFilter; @@ -43,12 +44,13 @@ public class XssAutoConfiguration { private static final Logger log = LoggerFactory.getLogger(XssAutoConfiguration.class); /** - * XSS 过滤器配置 + * XSS 过滤器 */ @Bean public FilterRegistrationBean xssFilter(XssProperties xssProperties) { FilterRegistrationBean registrationBean = new FilterRegistrationBean<>(); registrationBean.setFilter(new XssFilter(xssProperties)); + registrationBean.setOrder(OrderedConstants.Filter.XSS_FILTER); return registrationBean; } diff --git a/continew-starter-trace/src/main/java/top/continew/starter/trace/autoconfigure/TraceAutoConfiguration.java b/continew-starter-trace/src/main/java/top/continew/starter/trace/autoconfigure/TraceAutoConfiguration.java index faf32cf9..f7ed463f 100644 --- a/continew-starter-trace/src/main/java/top/continew/starter/trace/autoconfigure/TraceAutoConfiguration.java +++ b/continew-starter-trace/src/main/java/top/continew/starter/trace/autoconfigure/TraceAutoConfiguration.java @@ -30,7 +30,7 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Primary; -import org.springframework.core.Ordered; +import top.continew.starter.core.constant.OrderedConstants; import top.continew.starter.core.constant.PropertiesConstants; import top.continew.starter.trace.filter.TLogServletFilter; import top.continew.starter.trace.handler.TraceIdGenerator; @@ -70,14 +70,14 @@ public class TraceAutoConfiguration { } /** - * TLog 过滤器配置 + * TLog 过滤器 */ @Bean public FilterRegistrationBean tLogServletFilter() { - FilterRegistrationBean registration = new FilterRegistrationBean<>(); - registration.setFilter(new TLogServletFilter(traceProperties)); - registration.setOrder(Ordered.HIGHEST_PRECEDENCE); - return registration; + FilterRegistrationBean registrationBean = new FilterRegistrationBean<>(); + registrationBean.setFilter(new TLogServletFilter(traceProperties)); + registrationBean.setOrder(OrderedConstants.Filter.TRACE_FILTER); + return registrationBean; } /**