Как работать с security.enable-csrf в Spring Boot 2? - PullRequest
0 голосов
/ 25 сентября 2018

Я переношу приложение из Spring Boot 1.5 на 2.0.5.У меня установлено свойство security.enable-csrf=true в версии 1.5, которое недоступно в версии 2.0 загрузчика Spring.

Я прочитал документы, и в Spring Boot 2.0 сказано:

Защита CSRF включена по умолчанию в конфигурации Java.

Таким образом, по умолчанию она включена нормально, но есть и один созданный класс, который расширяет WebSecurityConfigurerAdapter, что означает конфигурацию безопасности Spring Boot по умолчаниюбыл выключенОзначает ли это также, что security.enable-csrf теперь отключен?

Если да, как мне включить его, как если бы он был в приложении для версии 1.5.

Я не получил ни одного документа, который даетчеткое подтверждение того, как обрабатывать security.enable-csrf свойство в Spring Boot 2.0 и при объявлении WebSecurityConfigurerAdapter.

Кто-нибудь знает об этом?Также любая ссылка на документ, которую я пропустил, чтобы прочитать об этом, была бы очень полезной.

Ответы [ 2 ]

0 голосов
/ 30 сентября 2018

Чтобы иметь обратную совместимость со свойством, уже заданным в вашем приложении, security.enable-csrf=true, вы можете использовать следующий код:

@EnableWebSecurity
public class WebSecurityConfig extends
WebSecurityConfigurerAdapter {

    @Value("${security.enable-csrf}")
    private boolean csrfEnabled;

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        if (!csrfEnabled) {
            http.csrf().disable();
        }
    }
}

Как вы можете догадаться, магия исходит отhttp.csrf().disable(); что в приведенном выше коде вы можете управлять включением / отключением его с помощью свойства, установленного в файле application.properties.


Дополнительная информация:

Для получения более подробной информации вы также можете обратиться к весенним документам:

0 голосов
/ 25 сентября 2018

WebSecurityConfigurerAdapter - абстрактный класс, когда вы создаете класс, который расширяет WebSecurityConfigurerAdapter, вы переопределяете метод void configure(HttpSecurity http).

В этом методе вы можете отключить csrf, например;

http.csrf().disable();

Вы можете прочитать этот комментарий поверх метода csrf() (в классе HttpSecurity).

Добавлена ​​поддержка CSRF.Это активируется по умолчанию при использовании конструктора WebSecurityConfigurerAdapter по умолчанию.Вы можете отключить его .... "

В этом комментарии говорится, что при расширении этого класса работает конструктор по умолчанию WebSecurityConfigurerAdapter и активируется csrf.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...