@DeOne
Программист

Почему такое происходит с CSRF в Yii2?

Здравствуйте. Подскажите, пожалуйста, почему такое творится. Настроил, чтобы не нужно было постоянно авторизовываться, а авторизация сохранилась на долго:

'request' => [
            // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
            'class' => 'app\assets\*********',
            'cookieValidationKey' => '*********************',
            'enableCookieValidation' => true,
            'enableCsrfCookie' => true,
            'enableCsrfValidation' => true,
        ],
        'session' => [
            'class' => 'yii\web\Session',
            'cookieParams' => ['lifetime' => 3600*24*30*12],
            'timeout' => 3600*24*30*12,
            'useCookies' => true,
        ],


В layout в теге head:
<?= Html::csrfMetaTags();?>

В формах используется ActionForm.

Вроде бы всё хорошо. Работает, не вылетает. Но на POST запросах теперь не проходит проверка CSRF. Пишет "Не удалось проверить подлинность запроса". Не могу понять почему так. Помогите, пожалуйста.
  • Вопрос задан
  • 2015 просмотров
Решения вопроса 1
@DeOne Автор вопроса
Программист
Проблема решена. Даже не представлял, что из-за такой ерунды не будет работать.
В layout не было
<?php $this->beginPage();?>
Из-за этого не генерировался заново CSRF.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Akdmeh
@Akdmeh
PHP, Yii2, Music
Этой информации недостаточно. Проверьте и добавьте в ваше сообщение такие участки кода: есть ли в layout файле подключение csrf с помощью хелпера Html; используете ли вы для отображения формы виджет ActionForm или хелпер Html::beginForm (они автоматически добавляют CSRF-метку); если используете - поставили ли POST.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы