14

投稿を削除しようとしたときに、次のエラーが発生しました。

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

4 に答える 4

21

私は同じ問題を抱えていましたが、次の方法で解決しました。それが役に立てば幸い。追加した

'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)));
?>

ありがとう。

于 2012-08-01T13:38:48.743 に答える
9

CSRF validationを有効にしたようです。使用する場合は、ドキュメントを読み、すべての POST 要求で CSRF トークンを送信するようにしてください。

于 2012-06-22T10:09:36.773 に答える
1

URL(GET)を使用して削除しているため、CSRFはこのエラーを出し続けます

CSRF検証を使用するには、CSRFトークンを生成し、投稿ごとに送信する有効なフォームを使用してリクエストを行う必要があります。

ルックアップ:Yii CForm

于 2012-06-23T23:01:58.460 に答える