Я пытаюсь реализовать фильтр безопасности Spring следующим образом:
@Configuration
@EnableWebSecurity
open class OpenApiConfigurer : WebSecurityConfigurerAdapter() {
override fun configure(http: HttpSecurity) {
http.addFilter(object : FilterSecurityInterceptor() {
override fun doFilter(request: ServletRequest, response: ServletResponse, chain: FilterChain?) {
super.doFilter(request, response, chain)
}
})
}
...
}
Я могу подтвердить, что @Configuration загружается, потому что вызывается метод configure и добавляется фильтр. Однако метод doFilter никогда не вызывается — я могу вызывать любые запросы, но внутри него он ничего не делает.
Что может быть не так? Нужно ли мне делать что-то особенное?
Пробовал чистую Java, но тоже самое: gist.github.com/knyttl/dd01ee7bd0f157c66786f98e9baba793 — http.addFilter вызывается, а doFilter никогда — поэтому эта проблема не связана с Kotlin.





Причина была в следующем:
// Even though this class is not a bean/service/configuration, it must be defined for
// the Spring-Security to work - otherwise the filters are never invoked with no error.
open class SecurityInitializer : AbstractSecurityWebApplicationInitializer()
У меня была та же проблема, которая была исправлена добавлением реализации AbstractSecurityWebApplicationInitializer (см.: Почему Spring Security не работает?).
Это Котлин? Если да, добавьте языковой тег. Возможно ли, что причина в том, как Kotlin компилируется в JVM? Можете ли вы протестировать на чистой Java?