From 419c1870fff446f6483e7eaed2ac700a0e843fcd Mon Sep 17 00:00:00 2001 From: thinkgem Date: Mon, 8 Sep 2025 11:21:59 +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 | 8 ------- 2 files changed, 15 insertions(+), 16 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 912ff815..33ae51b8 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,9 +5,11 @@ 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; +import org.slf4j.MDC; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -20,21 +22,28 @@ import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletResponse; /** - * 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 { @@ -43,6 +52,7 @@ public class IpAddrFilterConfig { ServletUtils.renderString(response, Global.getText("访问拒绝")); } LocaleUtils.removeTimeZoneAwareLocaleContext(); + MDC.remove(TRACE_ID); }); LocaleUtils.setLocaleResolver(localeResolver); bean.addUrlPatterns("/*"); @@ -78,9 +88,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 69a4ac9c..10cd7e76 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,15 +4,12 @@ */ package com.jeesite.modules.sys.interceptor; -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 org.slf4j.MDC; import org.springframework.core.NamedThreadLocal; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; @@ -27,16 +24,12 @@ import javax.servlet.http.HttpServletResponse; */ 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()){ @@ -81,7 +74,6 @@ public class LogInterceptor extends BaseService implements HandlerInterceptor { TimeUtils.formatTime(executeTime), ByteUtils.formatByteSize(totalMemory), ByteUtils.formatByteSize(totalMemory-(totalMemory-runtime.freeMemory()))); } - MDC.remove(TRACE_ID); } }