На Yii2 сделана защита от CSRF-атак. Когда она срабатывает, то при отправке формы вы получаете ошибку "Не удалось проверить переданные данные".
Я столкнулся с тем, что эта ошибка появлялась случайным образом. В итоге выяснилось, что проблема в настройках куки.
Два моих приложения, "backend" и "frontend", имели разный код для шифровки кук: "cookieValidationKey". Он настраивается в файле "config/main-local.php" для каждого из приложений.
Из-за этого, открыв сначала страницу на одном приложении, а потом на другом, сбрасывался CSRF-код - ведь шифровали куки с одним ключом, а расшифровывать пытаемся с другим.
Решение: прописать в конфигах одинаковые значения для "cookieValidationKey". Теперь всё работает )
Я столкнулся с тем, что эта ошибка появлялась случайным образом. В итоге выяснилось, что проблема в настройках куки.
Два моих приложения, "backend" и "frontend", имели разный код для шифровки кук: "cookieValidationKey". Он настраивается в файле "config/main-local.php" для каждого из приложений.
Из-за этого, открыв сначала страницу на одном приложении, а потом на другом, сбрасывался CSRF-код - ведь шифровали куки с одним ключом, а расшифровывать пытаемся с другим.
Решение: прописать в конфигах одинаковые значения для "cookieValidationKey". Теперь всё работает )
Ты спас мне время, спасибо
ОтветитьУдалитьЕщё, проверяйте конфиг в main.php в каждом модуле
ОтветитьУдалить'components' => [
'request' => [
'csrfParam' => '_csrf_project',
],
То есть передаваемый параметр csrf должен соответствовать с csrfParam