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

This commit is contained in:
thinkgem
2025-09-08 11:22:05 +08:00
parent 104e59349d
commit 8c749eae52
2 changed files with 20 additions and 23 deletions

View File

@@ -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地址黑白名单过滤器配置
* 全局过滤器
* 1IP地址黑白名单过滤器配置
* 2本地化时区上下文设置
* 3Slf4j 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<Filter> ipAddrFilter(LocaleContextResolver localeResolver) {
public FilterRegistrationBean<Filter> jeesiteGlobalFilter(LocaleContextResolver localeResolver) {
FilterRegistrationBean<Filter> 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;
}
}

View File

@@ -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<Long> startTimeThreadLocal =
new NamedThreadLocal<Long>("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);
}
}