web.xml к WebSecurityConfigurerAdapter

#java #spring #jakarta-ee #servlets

#java #весна #джакарта-ee #сервлеты

Вопрос:

Я использую WebSecurityConfigurerAdapter и хочу знать, есть ли способ настроить обработчик ошибок в WebSecurityConfigurerAdapter, как это было раньше в web.xml Я хочу перехватить все мои UsernameNotFoundException/401 и обработать его.

пример:

 <error-page>
<error-code>401</error-code>
<location>/SngErrorHandler</location>
</error-page>

<error-page>
<exception-type>org.springframework.security.core.userdetails.UsernameNotFoundException</exception-type>
<location>/SngErrorHandler</location>
</error-page> 
 

Ответ №1:

Согласно javadoc AbstractAuthenticationFilterConfigurer (для Spring-Security 3.2.x), Spring security обычно делает это автоматически для вас, перенаправляя на «/ login?ошибка»

Если вы хотите перенаправить на другую страницу и используете аутентификацию в форме входа, вы можете сделать это, добавив http.formLogin().failureUrl("/SngErrorHandler") configure(HttpSecurity http) свой метод WebSecurityConfigurerAdapter .

Это должно быть адаптировано, если вы используете другие методы аутентификации.

Комментарии:

1. Привет, как должен выглядеть мой SngErrorHandler?

2. @orikoko Классически, в web.xml страницы с ошибками — это простые HTML-страницы, поэтому я предположил, что это то, что вы хотели. В показанном мной методе SngErrorHandler может быть любой URL (но было бы лучше, если бы он был доступен без аутентификации …). Если это не то, что вам нужно, вам следует отредактировать свои вопросы, чтобы добавить какие-либо уточнения.

3. Привет в web.xml SngErrorHandler — это не html, это класс сервлета, который генерирует ответ (строку).