Как применить шаблон Spring Security AntMatchers только для URL с pathVariable - PullRequest
3 голосов
/ 26 апреля 2019

Я использую Spring boot и WebSecurityConfigurerAdapter для настройки безопасности.

Способ настройки игнорируемых безопасных antMatches выглядит следующим образом:

    @Override
    public void configure(final WebSecurity web) {
        web
           .ignoring()
           .antMatchers("/items")
           .antMatchers("/items/{itemId}")

, где {itemId} в формате UUID

Проблема заключается в том, что при такой конфигурации конечные точки, такие как /items/report, /items/images тоже открыты, но не должны.

Есть ли способ применить правило игнорирования только к URI с переменными пути?

Ответы [ 3 ]

0 голосов
/ 26 апреля 2019

Для более сложного сопоставления, чем может сделать шаблон Ant, используйте защиту на основе методов на вашем контроллере или (лучше) методы уровня обслуживания.

0 голосов
/ 26 апреля 2019

В соответствии с документацией для AntPathMarcher необходимо указать переменную пути с регулярным выражением в соответствии с документом:

{весна: [az] +} соответствуетрегулярное выражение [az] + в качестве переменной пути с именем «spring».

В вашем случае это будет:

@Override
    public void configure(final WebSecurity web) {
        web
           .ignoring()
           .antMatchers("/items/{itemId:[\\d+]}")
0 голосов
/ 26 апреля 2019

Вы можете попробовать это, d представляет itemId

antMatchers("/items/{\\d+}").access("hasAnyAuthority('ROLE')")

если вы хотите дать разрешение на все

antMatchers("/items/**").permitAll()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...