2012-06-22 11 views
13

Kiedy starałem się usunąć post Mam ten błąd:Yii Błąd 400 CSRF żeton nie mogły zostać zweryfikowane podczas próby usunięcia stanowisko

Yii Error 400 The CSRF token could not be verified 

ja nie wiem, co jest przyczyną tego i dokładnie do tego, co może być powiązane. tutaj jest moja akcja usuń:

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

Odpowiedz

8

Wygląda na to, że masz włączone CSRF validation. Jeśli chcesz go użyć, przeczytaj dokument i upewnij się, że wysłałeś token CSRF w każdym żądaniu POST.

1

CSRF zachowa daje ten błąd, ponieważ jesteś usunięcie za pomocą adresu URL (GET)

Aby korzystać walidacji CSRF, należy dokonać żądanie przy pomocy ważnego formularza, który generuje i przesyła żeton CSRF to z każdym wpisem.

Lookup: Yii CForm

18

miałem ten sam problem, ale następujący rozwiązać go. Mam nadzieję, że to pomoże. dodałem

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

do następującego kodu:

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

Dzięki.

Powiązane problemy