【7】自定义过滤器
文章目录
-
- 自定义网关过滤器
-
- 方式1 继承AbstractGatewayFilterFactory
-
-
- 继承抽象类
-
- 添加配置
-
- 测试
-
- 方式2 实现GatewayFilter 接口
- 自定义全局过滤器
-
- 案例演示之鉴权
-
-
- 编写过滤器
-
- 测试
-
- 案例演示之防范XSS 攻击
自定义网关过滤器
需求:编写一个网关过滤器,实现打印请求URI。
方式1 继承AbstractGatewayFilterFactory
1. 继承抽象类
仿照默认的网关过滤器,实现一个简单打印请求路径和过滤器配置参数的功能。
@Slf4j
@Component
public class RequestLogGatewayFilterFactory extends AbstractGatewayFilterFactory<AbstractGatewayFilterFactory.NameConfig> {
public RequestLogGatewayFilterFactory() {
super(NameConfig.class);
}
@Override
public List<String> shortcutFieldOrder() {
return Arrays.asList("name");
}
@Override
public GatewayFilter apply(NameConfig config) {
return new GatewayFilter() {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
// 获取请求路径
URI uri = exchange.getRequest().getURI();
log.info("获取到请求路径:{}", uri.toString());
//
log.info("配置属性:{}", config.getName());
return chain.filter(exchange);
}
@Override
public String toString() {
return GatewayToStringStyler.filterToStringCreator(RequestLogGatewayFilterFactory.this).toString();
}
};
}
}