Module bus.vortex

Class CipherFilter

java.lang.Object
org.miaixz.bus.vortex.filter.AbstractFilter
org.miaixz.bus.vortex.filter.CipherFilter
All Implemented Interfaces:
Filter, org.springframework.web.server.WebFilter

@Order(-2147483647) public class CipherFilter extends AbstractFilter
数据加解密过滤器,负责对请求参数进行解密和对响应数据进行加密处理

该过滤器在过滤器链中位于较高优先级位置(Ordered.HIGHEST_PRECEDENCE + 1), 主要用于对加密的请求参数进行解密操作,以及对响应数据进行加密处理。

请求处理阶段:当解密功能启用且上下文标记需要解密时,过滤器会遍历所有请求参数,对非空参数值进行解密处理。 响应处理阶段:当加密功能启用且响应格式为XML或JSON时,过滤器会拦截响应数据,对消息中的数据进行加密处理。

目前支持AES-CBC-PKCS7Padding加解密方式,通过配置文件可以设置加解密密钥和偏移量。

Since:
Java 17+
Author:
Kimi Liu
  • Constructor Details

    • CipherFilter

      public CipherFilter(Config.Decrypt decrypt, Config.Encrypt encrypt)
      构造器,初始化加解密配置
      Parameters:
      decrypt - 解密配置对象
      encrypt - 加密配置对象
  • Method Details

    • init

      @PostConstruct public void init()
      初始化方法,在 bean 创建后执行,配置 AES 加解密实例
    • doFilter

      protected reactor.core.publisher.Mono<Void> doFilter(org.springframework.web.server.ServerWebExchange exchange, org.springframework.web.server.WebFilterChain chain, Context context)
      内部过滤方法,执行加解密逻辑
      Specified by:
      doFilter in class AbstractFilter
      Parameters:
      exchange - 当前的 ServerWebExchange 对象
      chain - 过滤器链
      context - 请求上下文
      Returns:
      reactor.core.publisher.Mono<Void> 表示异步处理完成