java.lang.Object
org.miaixz.bus.vortex.filter.AbstractFilter
org.miaixz.bus.vortex.filter.PrimaryFilter
- All Implemented Interfaces:
Filter,org.springframework.web.server.WebFilter
核心前置过滤器,作为请求处理链的入口,负责初步的安全校验、参数解析和上下文初始化。
此过滤器具有最高的执行优先级 (Ordered.HIGHEST_PRECEDENCE),确保在其他过滤器之前运行。 主要职责包括:
- 安全拦截: 拦截针对如
/favicon.ico等常见无效路径的请求,并防御路径遍历攻击。 - 请求分发: 根据请求的 HTTP 方法 (GET) 和 Content-Type (JSON, form-data, urlencoded) 将请求分发给相应的处理器。
- 参数解析: 从 URL 查询字符串或请求体中异步解析参数,并统一存入
Context对象中,供后续过滤器和业务逻辑使用。 - 请求体复用: 对于POST等包含请求体的请求,在读取后会通过
ServerHttpRequestDecorator将请求体重新包装,以确保下游组件可以再次读取。 - 自动重试: 内置了对请求体解析的重试机制,以增强系统在处理网络波动时的健壮性。
- Since:
- Java 17+
- Author:
- Justubborn
-
Constructor Summary
Constructors -
Method Summary
Methods inherited from class org.miaixz.bus.vortex.filter.AbstractFilter
filter, getAssets, getContext, getOriginalAuthority, getOriginalProtocol, getRequestMap, setContentType, validate, valueOf
-
Constructor Details
-
PrimaryFilter
public PrimaryFilter()
-
-
Method Details
-
doFilter
protected reactor.core.publisher.Mono<Void> doFilter(org.springframework.web.server.ServerWebExchange exchange, org.springframework.web.server.WebFilterChain chain, Context context) 过滤器的核心执行方法,负责对请求进行初步安全检查和分发处理。该方法首先执行路径安全检查,包括黑名单路径过滤和路径遍历攻击检测。 检查通过后,根据请求类型(GET 或其他方法及 Content-Type)将
ServerWebExchange传递给相应的处理方法 (handleGetRequest,handleJsonRequest等)。- Specified by:
doFilterin classAbstractFilter- Parameters:
exchange- 当前的 ServerWebExchange 对象chain- 过滤器链context- 用于在整个请求生命周期内传递数据的上下文对象- Returns:
reactor.core.publisher.Mono<Void>表示异步过滤操作的完成- Throws:
org.miaixz.bus.core.lang.exception.ValidateException- 如果请求路径被阻止或检测到路径遍历攻击
-