В данный момент Spring Security защищает приложение с помощью обычной аутентификации. Данные пользователя поступают из источника JDBC. Если база данных выйдет из строя, внутреннее устройство механизма загрузки пользователя выдаст DataAccessException
. Класс поставщика аутентификации по умолчанию, DaoAuthenticationProvider
, перехватывает исключение и сопоставляет его с AuthenticationServiceException
. Конечным результатом такого сопоставления является то, что браузер / клиент получает HTTP-код 401.
Что я хочу сделать, это обработать недоступность базы данных другим способом. По крайней мере, я хочу, чтобы это было обработано путем ответа HTTP 503, но я бы предпочел, чтобы он перенаправлялся на страницу с ошибкой. Как мне этого добиться?
РЕДАКТИРОВАТЬ: Решение Ритеша было частично правильным. Помимо реализации вашей собственной базовой точки входа, необходимо также использовать v3.0.3 схемы безопасности, чтобы элемент <http-basic/>
имел атрибут entry-point-ref
. Если вы не используете этот специальный атрибут, базовый фильтр по умолчанию всегда будет использовать собственную реализацию базовой точки входа.