Spring WebFlux добавляет WebFIlter для соответствия определенным путям - PullRequest
0 голосов
/ 31 октября 2018

В контексте приложения весенней загрузки я пытаюсь добавить WebFilter для фильтрации только запросов, которые соответствуют определенному пути.

Пока у меня есть фильтр:

    @Component
    public class AuthenticationFilter implements WebFilter {

        @Override
        public Mono<Void> filter(ServerWebExchange serverWebExchange,
                             WebFilterChain webFilterChain) {
        final ServerHttpRequest request = serverWebExchange.getRequest();

            if (request.getPath().pathWithinApplication().value().startsWith("/api/product")) {
               // logic to allow or reject the processing of the request
            }
        }
    }

Я пытаюсь добиться того, чтобы удалить сопоставление пути из фильтра и добавить его в другое место, более подходящее, например, из того, что я прочитал до сих пор, SecurityWebFilterChain.

Большое спасибо!

1 Ответ

0 голосов
/ 13 марта 2019

Возможно, у меня есть более чистый способ решения вашей проблемы. Он основан на коде, найденном в UrlBasedCorsConfigurationSource . Он использует PathPattern , который соответствует вашим потребностям.

@Component
public class AuthenticationFilter implements WebFilter {

    private final PathPattern pathPattern;

    public AuthenticationFilter() {
        pathPattern = new PathPatternParser().parse("/api/product");
    }

    @Override
    public Mono<Void> filter(ServerWebExchange serverWebExchange,
                         WebFilterChain webFilterChain) {
    final ServerHttpRequest request = serverWebExchange.getRequest();

        if (pathPattern.matches(request.getPath().pathWithinApplication())) {
           // logic to allow or reject the processing of the request
        }
    }
}
...