Фильтры безопасности Spring в конфигурации Java и несколько адаптеров WebSecurityConfigurerAdapters

#java #spring #spring-security

#java #spring #spring-безопасность

Вопрос:

Извините, что перепостил это здесь и на старых форумах spring, но я не получил никаких ответов и подумал, что исходное сообщение, возможно, потерялось в случайном порядке, когда форумы были деактивированы. В любом случае…

Из документации можно имитировать несколько элементов в конфигурации Java, расширяя WebSecurityConfigurerAdapter несколько раз. Я сделал это и добавил пару пользовательских фильтров только к одному из них, но странно то, что фильтры, похоже, применяются ко всем запросам, даже к тем, которым они не должны соответствовать. Вот пример моей конфигурации:

 @Configuration
class ConfigA extends WebSecurityConfigurerAdapter {
    public void configure(HttpSecurity http) {
        http
          .antMatcher("/foo")
          .authorizeRequests()
               .anyRequest().fullyAuthenticated()
              .and()
         .addFilterAfter(myFilter, BasicAuthFilter.class)
        ...
   }
}

@Configuration
class ConfigB extends WebSecurityConfigurerAdapter {
    public void configure(HttpSecurity http) {
        http
          .antMatcher("/bar")
          .authorizeRequests()
               .anyRequest().fullyAuthenticated()
              .and()
​         ...
   }
}
  

Чего мне не хватает? Является ли это по замыслу, что этот фильтр применяется к обоим / всем запросам? Должен ли сам фильтр определять, к каким запросам он должен применяться?

Спасибо, Джастин

Комментарии:

1. Когда вы добавляете фильтр, он соединяется с фильтрами безопасности Spring, поэтому все запросы проходят через него. Вы можете получить путь из HttpServletRequest и сделать что-то только с тем запросом, который вы хотите.