2012-06-22 19 views
13

当我试图删除后,我得到这个错误时: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); 
    } 

回答

8

看来你已经启用CSRF validation。如果您想使用它,请阅读文档并确保您在每个POST请求中发送CSRF令牌。

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

感谢。

相关问题