java.lang.Object
org.miaixz.bus.vortex.filter.AbstractFilter
org.miaixz.bus.vortex.filter.AuthorizeFilter
- All Implemented Interfaces:
Filter,org.springframework.web.server.WebFilter
访问鉴权过滤器,负责验证请求的合法性、方法、令牌和应用 ID
该过滤器是请求处理链中的重要组成部分,它通过检查请求的方法、版本、令牌和应用ID来验证请求的合法性。 过滤器会根据配置的资产信息验证请求的HTTP方法、令牌(如果需要)以及应用ID,确保只有合法的请求能够通过。
- Since:
- Java 17+
- Author:
- Justubborn
-
Constructor Summary
ConstructorsConstructorDescriptionAuthorizeFilter(AuthorizeProvider provider, AssetsRegistry registry) 构造器,初始化授权提供者和资产注册表 -
Method Summary
Modifier and TypeMethodDescriptionprotected voidauthorize(org.springframework.web.server.ServerWebExchange exchange, Context context, Assets assets) 校验令牌(如果资产要求)并将认证结果参数填充到请求参数中protected reactor.core.publisher.Mono<Void> doFilter(org.springframework.web.server.ServerWebExchange exchange, org.springframework.web.server.WebFilterChain chain, Context context) 内部过滤方法,执行授权验证逻辑protected void校验请求的 HTTP 方法是否匹配资产配置Methods inherited from class org.miaixz.bus.vortex.filter.AbstractFilter
filter, getAssets, getContext, getOriginalAuthority, getOriginalProtocol, getRequestMap, setContentType, validate, valueOf
-
Constructor Details
-
AuthorizeFilter
构造器,初始化授权提供者和资产注册表- Parameters:
provider- 授权提供者,用于处理令牌验证和授权逻辑registry- 资产注册表,用于存储和检索API资产信息
-
-
Method Details
-
doFilter
protected reactor.core.publisher.Mono<Void> doFilter(org.springframework.web.server.ServerWebExchange exchange, org.springframework.web.server.WebFilterChain chain, Context context) 内部过滤方法,执行授权验证逻辑该方法是过滤器的核心实现,负责执行完整的授权验证流程,包括: 1. 从请求中提取参数并设置上下文 2. 根据方法和版本查找对应的资产 3. 验证HTTP方法是否匹配 4. 如果需要,验证访问令牌 5. 验证应用ID是否匹配 6. 填充和清理请求参数 7. 将资产信息设置到上下文中
- Specified by:
doFilterin classAbstractFilter- Parameters:
exchange- 当前的 ServerWebExchange 对象,包含请求和响应信息chain- 过滤器链,用于将请求传递给下一个过滤器context- 请求上下文,包含请求相关的状态信息- Returns:
reactor.core.publisher.Mono<Void>表示异步处理完成,当所有验证通过后继续执行过滤器链
-
method
校验请求的 HTTP 方法是否匹配资产配置该方法检查当前请求的HTTP方法是否与资产配置中要求的方法一致。 如果不匹配,将根据期望的HTTP方法类型抛出不同的业务异常。
- Parameters:
exchange- ServerWebExchange 对象,包含请求和响应信息assets- 资产信息,包含期望的HTTP方法类型- Throws:
org.miaixz.bus.core.lang.exception.ValidateException- 如果方法不匹配,抛出对应错误
-
authorize
protected void authorize(org.springframework.web.server.ServerWebExchange exchange, Context context, Assets assets) 校验令牌(如果资产要求)并将认证结果参数填充到请求参数中如果资产配置要求令牌验证,该方法将检查请求中是否包含有效的访问令牌。 如果令牌存在且有效,将从授权结果中提取用户信息并添加到请求参数中。 如果令牌缺失或无效,将抛出相应的业务异常。
- Parameters:
exchange- ServerWebExchange 对象,包含请求和响应信息context- 上下文对象,包含令牌和通道信息assets- 资产信息,指示是否需要令牌验证- Throws:
org.miaixz.bus.core.lang.exception.ValidateException- 如果令牌缺失或认证失败
-