Обработка исключений и 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.


Ответы (0 шт):