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;
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地址黑白名单过滤器配置
* 全局过滤器
* 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 {
@@ -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;
}
}

View File

@@ -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<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()){
@@ -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);
}
}