Потратив много времени, я выяснил, что происходит.
Так что Spring не может найти один из ресурсов stati c, который используется на странице входа. Но вместо возврата статуса 404
для этого ресурса он пытается отобразить страницу с ошибкой и перенаправляет запрос на /error
. Тогда Spring Security отклоняет этот запрос, потому что пользователь не авторизован. Он сохраняет /error
запрос в сеанс (для перенаправления после успешного входа в систему) и перенаправляет пользователя на страницу входа.
Конечно, пользователь не может видеть это перенаправление, потому что статус 302
возвращается для запроса, который выполняется в фоновом режиме. , Но основной проблемой является /error
запрос, сохраненный в сеансе.
Затем пользователь успешно входит в систему и весной проверяет сеанс на наличие этого атрибута и выполняет перенаправление на страницу /error
. По умолчанию spring предполагает, что у вас есть такая страница где-то в c ресурсах . Если у вас нет этой страницы, вы увидите странную ошибку с кодом состояния 999.
Решение 1
Игнорировать /error
страницу в конфигурации безопасности:
web.ignoring().antMatchers("/favicon.ico", "/resources/**", "/error");
Таким образом, этот запрос не будет сохранен в сеансе для перенаправления пользователя после успешного входа в систему. Вы увидите, что на странице входа код состояния запроса к ресурсу stati c изменится с 302
на 404
.
Решение 2
Игнорировать часть автоматической настройки весенней загрузки:
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration
Это дает тот же результат, но отключает некоторые bean-компоненты из конфигурации ErrorMvcAutoConfiguration
, поэтому будьте осторожны.