Есть ли способ выполнить WebFilter для конкретных URL-адресов весной WebFlux - PullRequest
0 голосов
/ 06 мая 2019

У меня есть WebFilter, который я хотел бы исключить для пары URL.

Я использовал PathPattern, который можно использовать, чтобы исключить 1 URL, но не более того.

приватный финальный PathPattern pathPattern;

public MyFilter() {
    pathPattern = new PathPatternParser().parse("/url");
}

1008 *

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

    if (pathPattern.matches(exchange.getRequest().getPath().pathWithinApplication())) {
        return chain.filter(exchange);
    }

1 Ответ

0 голосов
/ 09 мая 2019


Есть несколько способов сделать это, ниже приведен один из способов

@Slf4j
@Component
public class LogFilter implements WebFilter {

    List<PathPattern> pathPatternList;

    public LogFilter() {
        PathPattern pathPattern1 = new PathPatternParser()
                .parse("/admin");
        PathPattern pathPattern2 = new PathPatternParser().parse("/emp");
        pathPatternList = new ArrayList<>();
        pathPatternList.add(pathPattern1);
        pathPatternList.add(pathPattern2);

    }

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

        RequestPath path = exchange.getRequest().getPath();
        if (pathPatternList.stream().anyMatch(pathPattern -> pathPattern.matches(path.pathWithinApplication()))) {
            log.info(path.toString() + " path excluded");
            return chain.filter(exchange);
        }
        log.info("executing logic for " + path.toString() + " path");
        return chain.filter(exchange);

    }
}

Для URL /admin и /emp это исключит логику длядругие URL-адреса он будет выполнять проверку логики ниже журналы

2019-05-10 00:20:55.660  INFO 15837 --- [ctor-http-nio-3] o.l.reactiveapp.filter.LogFilter         : /admin path excluded
2019-05-10 00:20:55.661  INFO 15837 --- [ctor-http-nio-3] o.l.r.controller.AdminController         : get admin
2019-05-10 00:20:58.361  INFO 15837 --- [ctor-http-nio-3] o.l.reactiveapp.filter.LogFilter         : /emp path excluded
2019-05-10 00:20:58.362  INFO 15837 --- [ctor-http-nio-3] o.l.r.controller.EmployeeController      : get employee
2019-05-10 00:21:03.649  INFO 15837 --- [ctor-http-nio-3] o.l.reactiveapp.filter.LogFilter         : executing logic for /messages/10 path
2019-05-10 00:21:03.651  INFO 15837 --- [ctor-http-nio-3] o.l.r.controller.StoresController        : getting message details for id 10 enter code here

Я надеюсь, что это отвечает на ваш вопрос
Спасибо

...