2012-06-22 5 views
13

Quando stavo cercando di eliminare un post che ho ottenuto questo errore:Yii Errore 400 Il token CSRF non è stato possibile verificare quando si cerca di cancellare il post

Yii Error 400 The CSRF token could not be verified 

Non so che cosa sta causando questo e esattamente a ciò che potrebbe essere correlato. ecco la mia azione cancellare:

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

risposta

8

Sembra che tu abbia abilitato CSRF validation. Se vuoi usarlo, leggi il documento e assicurati di inviare il token CSRF in ogni richiesta POST.

1

CSRF vi terrà dandovi questo errore perché si sta cancellando utilizzando un URL (GET)

Per poter utilizzare la convalida CSRF, si dovrebbe fare la vostra richiesta utilizzando un modulo valido che genera il CSRF token e sottopone con ogni post

Lookup: Yii CForm

18

Ho avuto lo stesso problema, ma il seguente risolto. Spero che sia d'aiuto. ho aggiunto

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

al seguente codice:

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

Grazie.

Problemi correlati