IpAddrFilter重命名为GlobalFilter全局过滤器,并将MDC移动到进来

This commit is contained in:
thinkgem
2025-09-08 11:21:59 +08:00
parent 079bfcf845
commit 419c1870ff
2 changed files with 15 additions and 16 deletions

View File

@@ -5,9 +5,11 @@
package com.jeesite.modules.config.web; package com.jeesite.modules.config.web;
import com.jeesite.common.config.Global; import com.jeesite.common.config.Global;
import com.jeesite.common.idgen.IdGen;
import com.jeesite.common.lang.StringUtils; import com.jeesite.common.lang.StringUtils;
import com.jeesite.common.utils.LocaleUtils; import com.jeesite.common.utils.LocaleUtils;
import com.jeesite.common.web.http.ServletUtils; import com.jeesite.common.web.http.ServletUtils;
import org.slf4j.MDC;
import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
@@ -20,21 +22,28 @@ import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
/** /**
* IP地址黑白名单过滤器配置 * 全局过滤器
* 1IP地址黑白名单过滤器配置
* 2本地化时区上下文设置
* 3Slf4j MDC 标识设置
*/ */
@Configuration(proxyBeanMethods = false) @Configuration(proxyBeanMethods = false)
public class IpAddrFilterConfig { public class GlobalFilterConfig {
private static final String TRACE_ID = "TRACE_ID";
private static long clearCacheTime; private static long clearCacheTime;
private static String[] allowPrefixes; private static String[] allowPrefixes;
private static String[] denyPrefixes; private static String[] denyPrefixes;
@Bean @Bean
public FilterRegistrationBean<Filter> ipAddrFilter(LocaleContextResolver localeResolver) { public FilterRegistrationBean<Filter> jeesiteGlobalFilter(LocaleContextResolver localeResolver) {
FilterRegistrationBean<Filter> bean = new FilterRegistrationBean<>(); FilterRegistrationBean<Filter> bean = new FilterRegistrationBean<>();
bean.setName("ipAddrFilter"); bean.setName("jeesiteGlobalFilter");
bean.setOrder(Ordered.HIGHEST_PRECEDENCE + 10); bean.setOrder(Ordered.HIGHEST_PRECEDENCE + 10);
bean.setFilter((servletRequest, servletResponse, chain) -> { bean.setFilter((servletRequest, servletResponse, chain) -> {
if (StringUtils.isBlank(MDC.get(TRACE_ID))) {
MDC.put(TRACE_ID, IdGen.randomShortString());
}
if (isAccessAllowed(servletRequest, servletResponse)) { if (isAccessAllowed(servletRequest, servletResponse)) {
chain.doFilter(servletRequest, servletResponse); chain.doFilter(servletRequest, servletResponse);
} else { } else {
@@ -43,6 +52,7 @@ public class IpAddrFilterConfig {
ServletUtils.renderString(response, Global.getText("访问拒绝")); ServletUtils.renderString(response, Global.getText("访问拒绝"));
} }
LocaleUtils.removeTimeZoneAwareLocaleContext(); LocaleUtils.removeTimeZoneAwareLocaleContext();
MDC.remove(TRACE_ID);
}); });
LocaleUtils.setLocaleResolver(localeResolver); LocaleUtils.setLocaleResolver(localeResolver);
bean.addUrlPatterns("/*"); bean.addUrlPatterns("/*");
@@ -78,9 +88,6 @@ public class IpAddrFilterConfig {
break; break;
} }
} }
if (result) { return result;
return true;
}
return false;
} }
} }

View File

@@ -4,15 +4,12 @@
*/ */
package com.jeesite.modules.sys.interceptor; package com.jeesite.modules.sys.interceptor;
import com.jeesite.common.idgen.IdGen;
import com.jeesite.common.lang.ByteUtils; import com.jeesite.common.lang.ByteUtils;
import com.jeesite.common.lang.StringUtils;
import com.jeesite.common.lang.TimeUtils; import com.jeesite.common.lang.TimeUtils;
import com.jeesite.common.network.IpUtils; import com.jeesite.common.network.IpUtils;
import com.jeesite.common.service.BaseService; import com.jeesite.common.service.BaseService;
import com.jeesite.modules.sys.utils.LogUtils; import com.jeesite.modules.sys.utils.LogUtils;
import com.jeesite.modules.sys.utils.UserUtils; import com.jeesite.modules.sys.utils.UserUtils;
import org.slf4j.MDC;
import org.springframework.core.NamedThreadLocal; import org.springframework.core.NamedThreadLocal;
import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
@@ -27,16 +24,12 @@ import javax.servlet.http.HttpServletResponse;
*/ */
public class LogInterceptor extends BaseService implements HandlerInterceptor { public class LogInterceptor extends BaseService implements HandlerInterceptor {
private static final String TRACE_ID = "TRACE_ID";
private static final ThreadLocal<Long> startTimeThreadLocal = private static final ThreadLocal<Long> startTimeThreadLocal =
new NamedThreadLocal<Long>("LogInterceptor StartTime"); new NamedThreadLocal<Long>("LogInterceptor StartTime");
@Override @Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
Object handler) throws Exception { Object handler) throws Exception {
if (StringUtils.isBlank(MDC.get(TRACE_ID))) {
MDC.put(TRACE_ID, IdGen.randomShortString());
}
long beginTime = System.currentTimeMillis();// 1、开始时间 long beginTime = System.currentTimeMillis();// 1、开始时间
startTimeThreadLocal.set(beginTime); // 线程绑定变量(该数据只有当前请求的线程可见) startTimeThreadLocal.set(beginTime); // 线程绑定变量(该数据只有当前请求的线程可见)
if (logger.isDebugEnabled()){ if (logger.isDebugEnabled()){
@@ -81,7 +74,6 @@ public class LogInterceptor extends BaseService implements HandlerInterceptor {
TimeUtils.formatTime(executeTime), ByteUtils.formatByteSize(totalMemory), TimeUtils.formatTime(executeTime), ByteUtils.formatByteSize(totalMemory),
ByteUtils.formatByteSize(totalMemory-(totalMemory-runtime.freeMemory()))); ByteUtils.formatByteSize(totalMemory-(totalMemory-runtime.freeMemory())));
} }
MDC.remove(TRACE_ID);
} }
} }