diff --git a/fizz-core/src/main/java/we/filter/AggregateFilter.java b/fizz-core/src/main/java/we/filter/AggregateFilter.java index 6b34cab..af82024 100644 --- a/fizz-core/src/main/java/we/filter/AggregateFilter.java +++ b/fizz-core/src/main/java/we/filter/AggregateFilter.java @@ -82,6 +82,11 @@ public class AggregateFilter implements WebFilter { @Override public Mono filter(ServerWebExchange exchange, WebFilterChain chain) { + FilterResult pfr = WebUtils.getPrevFilterResult(exchange); + if (!pfr.success) { + return WebUtils.getDirectResponse(exchange); + } + String serviceId = WebUtils.getBackendService(exchange); if (serviceId == null) { return chain.filter(exchange); diff --git a/fizz-core/src/main/java/we/filter/CallbackFilter.java b/fizz-core/src/main/java/we/filter/CallbackFilter.java index 3fa9fb3..d69339c 100644 --- a/fizz-core/src/main/java/we/filter/CallbackFilter.java +++ b/fizz-core/src/main/java/we/filter/CallbackFilter.java @@ -87,6 +87,11 @@ public class CallbackFilter extends FizzWebFilter { @Override public Mono doFilter(ServerWebExchange exchange, WebFilterChain chain) { + FilterResult pfr = WebUtils.getPrevFilterResult(exchange); + if (!pfr.success) { + return WebUtils.getDirectResponse(exchange); + } + ApiConfig ac = WebUtils.getApiConfig(exchange); if (ac != null && ac.type == ApiConfig.Type.CALLBACK) { CallbackConfig cc = ac.callbackConfig; diff --git a/fizz-core/src/main/java/we/util/WebUtils.java b/fizz-core/src/main/java/we/util/WebUtils.java index a0a2781..0b4add2 100644 --- a/fizz-core/src/main/java/we/util/WebUtils.java +++ b/fizz-core/src/main/java/we/util/WebUtils.java @@ -177,11 +177,11 @@ public abstract class WebUtils { } public static Mono getDirectResponse(ServerWebExchange exchange) { - return (Mono) exchange.getAttributes().get(WebUtils.directResponse); + return exchange.getAttribute(WebUtils.directResponse); } public static Map getFilterContext(ServerWebExchange exchange) { - return (Map) exchange.getAttribute(FILTER_CONTEXT); + return exchange.getAttribute(FILTER_CONTEXT); } public static FilterResult getFilterResult(ServerWebExchange exchange, String filter) {