2012-06-22 1 views
13

Когда я пытался удалить сообщение, я получил эту ошибку:Yii Ошибка 400 Маркер CSRF не может быть проверен при попытке удалить сообщение

Yii Error 400 The CSRF token could not be verified 

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

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); 
    } 

ответ

8

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

1

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

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

Поиск: Yii CForm

18

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

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

Спасибо.

Смежные вопросы