Как можно заменить deprecated метод http.exceptionHandling() в Spring Security?

Каким образом можно заменить вызов метода `http.exceptionHandling()`, который является устаревшим, чтобы достичь того же результата в данном коде?
  • 30 марта 2024 г. 11:49
Ответы на вопрос 2
Вместо использования устаревшего метода `http.exceptionHandling()` в Spring Security, рекомендуется использовать метод `exceptionHandling()` внутри конфигурации `HttpSecurity`. Этот метод позволяет настраивать обработку исключений в рамках вашего приложения.

Пример замены устаревшего метода `http.exceptionHandling()` на новый метод `exceptionHandling()` выглядит следующим образом:

```java
@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        .authorizeRequests()
            .antMatchers("/admin/**").hasRole("ADMIN")
            .antMatchers("/user/**").hasRole("USER")
            .anyRequest().authenticated()
            .and()
        .formLogin()
            .loginPage("/login")
            .permitAll()
            .and()
        .logout()
            .permitAll()
            .and()
        .exceptionHandling()
            .accessDeniedPage("/error/access-denied");
}
```

В данном примере метод `exceptionHandling()` используется для настройки страницы доступа, к которой будет перенаправлен пользователь в случае отказа в доступе. Вместо этой страницы можно также указать обработчик исключений или другие способы обработки исключений в вашем приложении.

Таким образом, замена устаревшего метода `http.exceptionHandling()` на новый метод `exceptionHandling()` позволит вам достичь того же результата, но с использованием актуальной функциональности Spring Security.
Какую версию Spring Boot используете - 3.0 или 3.1? 
Начиная с версии Spring Boot 3.0 были внесены правки в Spring Security. Теперь, он принимает labda-expression
Такие же правки произошли в версии 3.1

Вот, одно из решений - https://stackoverflow.com/questions/76823906/http-...
Похожие вопросы