Как заблокировать конечные точки по условию. AntMatchers не распознает переменные пути ⇐ JAVA
Как заблокировать конечные точки по условию. AntMatchers не распознает переменные пути
У меня есть приложение Spring Boot со свойством в файле .properties. Я хотел бы иметь возможность блокировать/включать некоторые конечные точки в зависимости от состояния.
В настоящее время я создал два bean-компонента, аннотированных @ConditionalOnProperty, поэтому они включаются/отключаются в зависимости от значения.
Бин-компоненты содержат конфигурацию Spring Security.
Давайте возьмём такую конфигурацию:
@Override protected void configure(HttpSecurity http) выдает исключение { http .antMatcher("/api/test/**") .authorizeRequests() .antMatchers("/api/test/{ID}").authenticated() .antMatchers("/api/test/hello/hello2").authenticated() .anyRequest().denyAll(); } Если внутри моего контроллера у меня есть три конечные точки:
[*]/api/test/{ID} [*]/api/test/hello/hello2 [*]/api/test/bye
бывает, что указав в Spring Security
.antMatchers("/api/test/{ID}").authenticated() /api/test/bye также включен (должен быть заблокирован, поскольку там есть denyAll()), поскольку Spring явно не знает, что может {ID} содержать. Поэтому я хотел понять, как можно заблокировать конечные точки, указав пути. Даже не используя Spring Security. Возможно, если есть альтернатива.
Я не хочу указывать все конечные точки одну за другой и применять правила к каждой, я хочу указать только ту, которую нужно «разблокировать», а все остальные блокируются автоматически.
Более того, я не хочу использовать регулярные выражения для переменных пути, поскольку в некоторых случаях переменные пути являются строками, и поэтому у меня может возникнуть та же проблема.
У меня есть приложение Spring Boot со свойством в файле .properties. Я хотел бы иметь возможность блокировать/включать некоторые конечные точки в зависимости от состояния.
В настоящее время я создал два bean-компонента, аннотированных @ConditionalOnProperty, поэтому они включаются/отключаются в зависимости от значения.
Бин-компоненты содержат конфигурацию Spring Security.
Давайте возьмём такую конфигурацию:
@Override protected void configure(HttpSecurity http) выдает исключение { http .antMatcher("/api/test/**") .authorizeRequests() .antMatchers("/api/test/{ID}").authenticated() .antMatchers("/api/test/hello/hello2").authenticated() .anyRequest().denyAll(); } Если внутри моего контроллера у меня есть три конечные точки:
[*]/api/test/{ID} [*]/api/test/hello/hello2 [*]/api/test/bye
бывает, что указав в Spring Security
.antMatchers("/api/test/{ID}").authenticated() /api/test/bye также включен (должен быть заблокирован, поскольку там есть denyAll()), поскольку Spring явно не знает, что может {ID} содержать. Поэтому я хотел понять, как можно заблокировать конечные точки, указав пути. Даже не используя Spring Security. Возможно, если есть альтернатива.
Я не хочу указывать все конечные точки одну за другой и применять правила к каждой, я хочу указать только ту, которую нужно «разблокировать», а все остальные блокируются автоматически.
Более того, я не хочу использовать регулярные выражения для переменных пути, поскольку в некоторых случаях переменные пути являются строками, и поэтому у меня может возникнуть та же проблема.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение