понедельник, 26 декабря 2016 г.

Ошибка "Не удалось проверить переданные данные" при отправке формы в Yii2

На Yii2 сделана защита от CSRF-атак. Когда она срабатывает, то при отправке формы вы получаете ошибку "Не удалось проверить переданные данные".

Я столкнулся с тем, что эта ошибка появлялась случайным образом. В итоге выяснилось, что проблема в настройках куки.

Два моих приложения, "backend" и "frontend", имели разный код для шифровки кук: "cookieValidationKey". Он настраивается в файле "config/main-local.php" для каждого из приложений.

Из-за этого, открыв сначала страницу на одном приложении, а потом на другом, сбрасывался CSRF-код - ведь шифровали куки с одним ключом, а расшифровывать пытаемся с другим.

Решение: прописать в конфигах одинаковые значения для "cookieValidationKey". Теперь всё работает )

2 комментария:

  1. Ещё, проверяйте конфиг в main.php в каждом модуле
    'components' => [
    'request' => [
    'csrfParam' => '_csrf_project',
    ],
    То есть передаваемый параметр csrf должен соответствовать с csrfParam

    ОтветитьУдалить