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); } }