Обработка исключений и SpringSecurity
Kotlin.
Настройка SecurityFilterChain:
@Bean
fun filterChain(http: HttpSecurity): SecurityFilterChain {
http {
authorizeRequests {
authorize(HttpMethod.GET,"/error", permitAll)
authorize("/login", permitAll)
authorize("/registration", permitAll)
authorize(anyRequest, authenticated)
}
formLogin {
loginPage = "/login"
}
}
return http.build()
}
Ввожу логин/пароль на formLogin, POST запрос обрабатывает Spring Security. Если всё отработало штатно и, например, такого пользователя нет, то SS бросает UsernameNotFoundException и редиректит (по умолчанию) на URL /login?error. Но если в процессе аутентификации я создаю собственное исключение (например, в UserDetailService), то SS оборачивает его через систему try/catch в свою ошибку InternalAuthenticationServiceException и опять же редиректит на URL /login?error. Я не могу обработать ни то, ни другое исключение в @ControllerAdvice через @ExceptionHandler (не отлавливает, ошибка не в контроллерах, а в фильтрах SS).
Что хотелось бы:
когда я создаю собственное исключение во время работы фильтров SS, обрабатывать его и выдавать пользователю ModelAndView (View /error и Model с параметрами), как я могу делать это через @ExceptionHandler.