[font="Tahoma"][right]
شاید در بعضی پروژها که مثلا می خواهید با بانک کار کنید وقتی csrf روشن هست به مشکل خورده باشید ، با راه حل زیر می توانید csrf را در بعضی action ها خاموش کنید.
ایجاد یک کامپونتت به نام HttpRequest.php
[/right]
class HttpRequest extends CHttpRequest
{
public $noCsrfValidationRoutes=array();
protected function normalizeRequest()
{
//attach event handlers for CSRFin the parent
parent::normalizeRequest();
//remove the event handler CSRF if this is a route we want skipped
if($this->enableCsrfValidation)
{
$url=Yii::app()->getUrlManager()->parseUrl($this);
foreach($this->noCsrfValidationRoutes as $route)
{
if(strpos($url,$route)===0)
Yii::app()->detachEventHandler('onBeginRequest',array($this,' validateCsrfToken'));
}
}
}
}
[right]
کانفیگ کامپونت request را به صورت زیر تغییر دهید
[/right]
// application components
'components'=>array(
....
'request' => array(
'enableCsrfValidation' => true,
'class'=>'HttpRequest',
'noCsrfValidationRoutes'=>array(
'controllername/actionname',
),
),
)
[right]
هر action که در noCsrfValidationRoutes وارد کنید در اون اکشن token csrf چک نمیشه .
[size=“1”]ادیتوش دلو دیونس من حال تایپ کردن ندارم [/size]
[/right][/font]