در حال ارتباط با سرور...




لطفا نظرات و پيشنهادات خود را بمنظور ارتقاء کيفي هرچه بيشتر سايت با ما در ميان بگذاريد.

ویدیوها مقالات کتاب ها اخبار پرسش و پاسخ
برنامه‌های رومیزی مبتنی بر وب زبان های برنامه سازی پایگاه داده سیستم عامل شبکه 
مقاله بگذارید
توسط : mehdints دسته بندی : مبتنی بر وب تاریخ : 1393-3-31 11:51:53

شاید در بعضی پروژها که مثلا می خواهید با بانک کار کنید وقتی csrf روشن هست به مشکل خورده باشید ، با راه حل زیر می توانید csrf را در بعضی action ها خاموش کنید.


ایجاد یک کامپونتت به نام HttpRequest.php

 

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

کانفیگ کامپونت request را به صورت زیر تغییر دهید

 

// application components
'components'=>array(
    ....
 
    'request' => array(
        'enableCsrfValidation' => true,
        'class'=>'HttpRequest',
        'noCsrfValidationRoutes'=>array(
            'controllername/actionname',
        ),
    ),
 

هر action که در noCsrfValidationRoutes وارد کنید در اون اکشن token csrf چک نمیشه .

منبع : engmmrj.ir

 

mehdints
101     4
نظرات
نظر داده نشده است