Ошибка Yii 400 Не удалось проверить токен CSRF при попытке удалить сообщение

Когда я пытался удалить сообщение, я получил эту ошибку:

Yii Error 400 The CSRF token could not be verified

Я не знаю, что именно вызывает это и с чем это может быть связано. вот мое действие удалить:

    public function actionDelete($id) {

         if (Yii::app()->request->isPostRequest) {
                // we only allow deletion via POST request
                $this->loadModel($id)->delete();

                // if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
                if (!isset($_GET['ajax']))
                $this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
        }
        else
              throw new CHttpException(400, 'Invalid request. Please do not repeat this request again.');
    }

    protected function afterDelete()
    {
        parent::afterDelete();
        Image::model()->deleteAll('name='.$this->id);
        Date::model()->deleteAll('tbl_show_id='.$this->id);
        Press::model()->deleteAll('tbl_show_id='.$this->id);
    }

Ответы на вопрос(4)

Даже если вы правильно следовали документации по Yii CSRF, ваша ошибка могла быть вызвана системой кэширования. В моем случае сервер кэшировал страницу входа в систему и затем снова и снова обслуживал один и тот же токен с помощью формы входа, возвращая при проверке значение false.

CSRF будет продолжать выдавать вам эту ошибку, потому что вы удаляете, используя URL (GET)

Чтобы использовать проверку CSRF, вы должны сделать запрос, используя действующую форму, которая генерирует токен CSRF и отправляет его с каждым сообщением.

Уважать: Yii CForm

У меня была такая же проблема, но следующие решили ее. Надеюсь, поможет. я добавил

'params'=> array('YII_CSRF_TOKEN' => Yii::app()->request->csrfToken)

к следующему коду:

<?php
    echo CHtml::linkButton('Delete',array(
        'submit'=>$this->createUrl('delete',array('id'=>$model->id)),
        'confirm'=>"Are you sure want to delete ".$item->product->name."from the shopping cart?",
        'params'=> array('YII_CSRF_TOKEN' => Yii::app()->request->csrfToken)));
?>

Благодарю.

Решение Вопроса

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

Ваш ответ на вопрос