Пружина weflux, остановка цепочки фильтров и возврат BAD REQUEST из текущего фильтра - PullRequest
0 голосов
/ 16 октября 2019

Весной webflux, как остановить цепочку фильтров и вернуть BAD_REQUEST из текущего фильтра?

public class AuthorizationFilter implements WebFilter {

    @Override
    public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {

        return chain.filter(Optional.of(exchange)
                .filter(serverWebExchange -> serverWebExchange.getRequest().getURI().getPath().endsWith("/authorize"))
                .orElse(//RETRUN BADREQUEST here));
    }

1 Ответ

0 голосов
/ 16 октября 2019

Вы можете управлять своими путями и установить код ответа:

@Component
public class AuthorizationFilter implements WebFilter {

    @Override
    public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {

        List<String> allowedPaths = new ArrayList<>();
    allowedPaths.add("/authorize");

        if (allowedPaths.contains(exchange.getRequest().getPath().toString())) {
            return chain.filter(exchange);
        } else {
            exchange.getResponse().setStatusCode(HttpStatus.BAD_REQUEST);
            return exchange.getResponse().setComplete();
        }
    }
}
...