IpAddrFilter重命名为GlobalFilter全局过滤器,并将MDC移动到进来
This commit is contained in:
@@ -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地址黑白名单过滤器配置
|
* 全局过滤器:
|
||||||
|
* 1、IP地址黑白名单过滤器配置
|
||||||
|
* 2、本地化时区上下文设置
|
||||||
|
* 3、Slf4j 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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user