Один из самых важных Spring Security Matchers
Это должен быть самый важный матчер Spring Security.
Любая ошибка, возникающая в приложении, которая не обрабатывается, перенаправляет пользователя на URL-адрес /error.
Для этого я провел симуляцию и проанализировал трассировку стека.
Давайте взглянем?
Здесь я смоделировал ошибку добавления значений с повторяющимися индексами. Если эта ошибка не обрабатывается должным образом, сервер возвращает ошибку 500, однако, поскольку мы используем Spring, эта ошибка обрабатывается самим контейнером.
В этом случае ошибка обрабатывается с использованием /error в качестве местоположения. Однако, поскольку мы также используем Spring Security, фреймворк будет передавать запрос через SecurityFilterChain, который требует, чтобы он был указан в матчерах.
Если я не укажу своему приложению разрешать запросы для /error, то Spring Security выдаст исключение AccessDeniedException. Это AccessDeniedException будет поймано ExceptionTranslationFilter, который вернет мне ошибку 401 вместо 500.
Почему тогда важно, чтобы я разрешал запросы к /error? Чтобы не возвращать неправильные ошибки из моего API, особенно когда я в dev, тестирую приложение.
Другим обходным путем может быть отключение обработки ошибок, однако он отключает обработку ошибок Spring Security.
Лично я предпочитаю разрешать любые запросы к /error, но эта конечная точка ведет себя довольно любопытно.
Но это для другой темы!
Исходное пост по адресу: https://twitter.com/masoxi22/status/1681136803112181760