当我尝试删除帖子时,出现此错误:
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);
}
我遇到了同样的问题,但以下解决了它。希望对您有所帮助。我添加了
'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 验证。如果您想使用它,请阅读文档并确保在每个 POST 请求中发送 CSRF 令牌。
CSRF 会一直给你这个错误,因为你正在使用 URL (GET) 删除
为了使用 CSRF验证,您应该使用生成 CSRF 令牌的有效表单提出请求,并在每个帖子中提交。
查找:一 CForm
即使您正确遵循了 Yii CSRF 文档,您的错误也可能是由缓存系统引起的。在我的情况下,服务器缓存了登录页面,然后使用登录表单一遍又一遍地提供相同的令牌,从而在验证时返回 false。