在Spring Cloud Gateway中GlobalFilter可以方便的全局拦截或统计,有时候希望在某些路由中可以跳过GlobalFilter,可以通过GatewayFilter与GlobalFilter组合来实现。
1. 新建项目
新建一个 Spring Cloud Gateway的项目,添加对应的依赖
2. GlobalFilter
https://www.jianshu.com/p/42455cdc6d25
@Component
public class TestGlobalFilter implements GlobalFilter, Ordered {
public final static String ATTRIBUTE_IGNORE_TEST_GLOBAL_FILTER = "@ignoreTestGlobalFilter";
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
//跳过检测
if (exchange.getAttribute(ATTRIBUTE_IGNORE_TEST_GLOBAL_FILTER) != null) {
return chain.filter(exchange);
} else {
//简单增加一个参数
URI uri = exchange.getRequest().getURI();
String query = uri.getRawQuery();
if (StringUtils.hasText(query)) {