From 8c749eae522301105f4026fd50390acf9b44ed8a Mon Sep 17 00:00:00 2001 From: thinkgem Date: Mon, 8 Sep 2025 11:22:05 +0800 Subject: [PATCH] =?UTF-8?q?IpAddrFilter=E9=87=8D=E5=91=BD=E5=90=8D?= =?UTF-8?q?=E4=B8=BAGlobalFilter=E5=85=A8=E5=B1=80=E8=BF=87=E6=BB=A4?= =?UTF-8?q?=E5=99=A8=EF=BC=8C=E5=B9=B6=E5=B0=86MDC=E7=A7=BB=E5=8A=A8?= =?UTF-8?q?=E5=88=B0=E8=BF=9B=E6=9D=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...terConfig.java => GlobalFilterConfig.java} | 23 ++++++++++++------- .../sys/interceptor/LogInterceptor.java | 20 ++++------------ 2 files changed, 20 insertions(+), 23 deletions(-) rename modules/core/src/main/java/com/jeesite/modules/config/web/{IpAddrFilterConfig.java => GlobalFilterConfig.java} (82%) diff --git a/modules/core/src/main/java/com/jeesite/modules/config/web/IpAddrFilterConfig.java b/modules/core/src/main/java/com/jeesite/modules/config/web/GlobalFilterConfig.java similarity index 82% rename from modules/core/src/main/java/com/jeesite/modules/config/web/IpAddrFilterConfig.java rename to modules/core/src/main/java/com/jeesite/modules/config/web/GlobalFilterConfig.java index e3fe80a7..28a0ff74 100644 --- a/modules/core/src/main/java/com/jeesite/modules/config/web/IpAddrFilterConfig.java +++ b/modules/core/src/main/java/com/jeesite/modules/config/web/GlobalFilterConfig.java @@ -5,6 +5,7 @@ package com.jeesite.modules.config.web; import com.jeesite.common.config.Global; +import com.jeesite.common.idgen.IdGen; import com.jeesite.common.lang.StringUtils; import com.jeesite.common.utils.LocaleUtils; import com.jeesite.common.web.http.ServletUtils; @@ -12,6 +13,7 @@ import jakarta.servlet.Filter; import jakarta.servlet.ServletRequest; import jakarta.servlet.ServletResponse; import jakarta.servlet.http.HttpServletResponse; +import org.slf4j.MDC; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -19,21 +21,28 @@ import org.springframework.core.Ordered; import org.springframework.web.servlet.LocaleContextResolver; /** - * IP地址黑白名单过滤器配置 + * 全局过滤器: + * 1、IP地址黑白名单过滤器配置 + * 2、本地化时区上下文设置 + * 3、Slf4j MDC 标识设置 */ @Configuration(proxyBeanMethods = false) -public class IpAddrFilterConfig { +public class GlobalFilterConfig { + private static final String TRACE_ID = "TRACE_ID"; private static long clearCacheTime; private static String[] allowPrefixes; private static String[] denyPrefixes; @Bean - public FilterRegistrationBean ipAddrFilter(LocaleContextResolver localeResolver) { + public FilterRegistrationBean jeesiteGlobalFilter(LocaleContextResolver localeResolver) { FilterRegistrationBean bean = new FilterRegistrationBean<>(); - bean.setName("ipAddrFilter"); + bean.setName("jeesiteGlobalFilter"); bean.setOrder(Ordered.HIGHEST_PRECEDENCE + 10); bean.setFilter((servletRequest, servletResponse, chain) -> { + if (StringUtils.isBlank(MDC.get(TRACE_ID))) { + MDC.put(TRACE_ID, IdGen.randomShortString()); + } if (isAccessAllowed(servletRequest, servletResponse)) { chain.doFilter(servletRequest, servletResponse); } else { @@ -42,6 +51,7 @@ public class IpAddrFilterConfig { ServletUtils.renderString(response, Global.getText("访问拒绝")); } LocaleUtils.removeTimeZoneAwareLocaleContext(); + MDC.remove(TRACE_ID); }); LocaleUtils.setLocaleResolver(localeResolver); bean.addUrlPatterns("/*"); @@ -77,9 +87,6 @@ public class IpAddrFilterConfig { break; } } - if (result) { - return true; - } - return false; + return result; } } diff --git a/modules/core/src/main/java/com/jeesite/modules/sys/interceptor/LogInterceptor.java b/modules/core/src/main/java/com/jeesite/modules/sys/interceptor/LogInterceptor.java index e80f5ff7..21d4fd60 100644 --- a/modules/core/src/main/java/com/jeesite/modules/sys/interceptor/LogInterceptor.java +++ b/modules/core/src/main/java/com/jeesite/modules/sys/interceptor/LogInterceptor.java @@ -4,22 +4,17 @@ */ package com.jeesite.modules.sys.interceptor; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; - -import org.slf4j.MDC; -import org.springframework.core.NamedThreadLocal; -import org.springframework.web.servlet.HandlerInterceptor; -import org.springframework.web.servlet.ModelAndView; - -import com.jeesite.common.idgen.IdGen; import com.jeesite.common.lang.ByteUtils; -import com.jeesite.common.lang.StringUtils; import com.jeesite.common.lang.TimeUtils; import com.jeesite.common.network.IpUtils; import com.jeesite.common.service.BaseService; import com.jeesite.modules.sys.utils.LogUtils; import com.jeesite.modules.sys.utils.UserUtils; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.core.NamedThreadLocal; +import org.springframework.web.servlet.HandlerInterceptor; +import org.springframework.web.servlet.ModelAndView; /** * 日志拦截器 @@ -28,16 +23,12 @@ import com.jeesite.modules.sys.utils.UserUtils; */ public class LogInterceptor extends BaseService implements HandlerInterceptor { - private static final String TRACE_ID = "TRACE_ID"; private static final ThreadLocal startTimeThreadLocal = new NamedThreadLocal("LogInterceptor StartTime"); @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { - if (StringUtils.isBlank(MDC.get(TRACE_ID))) { - MDC.put(TRACE_ID, IdGen.randomShortString()); - } long beginTime = System.currentTimeMillis();// 1、开始时间 startTimeThreadLocal.set(beginTime); // 线程绑定变量(该数据只有当前请求的线程可见) if (logger.isDebugEnabled()){ @@ -82,7 +73,6 @@ public class LogInterceptor extends BaseService implements HandlerInterceptor { TimeUtils.formatTime(executeTime), ByteUtils.formatByteSize(totalMemory), ByteUtils.formatByteSize(totalMemory-(totalMemory-runtime.freeMemory()))); } - MDC.remove(TRACE_ID); } }