2012-08-08 11 views
5

मेरे AJAX कॉल पर सेव्यूटी घटक से निपटने के लिए उन्हें नहीं जाना चाहिए।केकफ़्पी 2 सुरक्षा घटक और AJAX कॉल

आप केकफ़्पी 2.x में इसके साथ कैसे निपटते हैं?

Appcontroller.php

public function beforeFilter() { 
     $this->Security->blackHoleCallback = 'blackhole'; 
     if ($this->request->is('ajax')) { 
      $this->Security->validatePost = false; 
     } 

काम करने के लिए प्रतीत नहीं होता है ...

उत्तर

3

तुम अब भी केक के प्रपत्र सुरक्षा यांत्रिकी का उपयोग कर सुरक्षित ajax कॉल कर सकते हैं। ऐसा करने के लिए, अजाक्स कॉल पैरामीटर को स्टोर करने के लिए एक गैर-दृश्यमान फ़ॉर्म और इनपुट इनपुट प्रस्तुत करें। फिर, जावास्क्रिप्ट के साथ इन पैरामीटर को अपने फॉर्म में सेट करें और इसे क्रमबद्ध करके AJAX कॉल करें। याद रखें कि यदि आपके पास सीएसआरएफ चेक सक्षम है (और एक-टोकन-प्रति-सत्र अक्षम है) तो आपको फ़ॉर्म को एक नए वैध सीएसआरएफ टोकन के साथ अपडेट करना होगा (आप $this->request->params['_Token']['key'] के साथ नियंत्रक में इसे पढ़ सकते हैं)।

उदाहरण:

<?php 
    echo $this->Form->create('AjaxForm'); 
     echo $this->Form->hidden('value'); 
    echo $this->Form->end(); 
?> 

<script>  
    function makeAjaxCall() { 
     $.post(
      ajaxUrl, 
      $('#AjaxForm').serialize(), 
      function(data) { 
       $('#AjaxForm [name="data[_Token][key]"]').val(data.newCsrfToken) 
      } 
     ); 
    }; 
</script> 

आगे के संदर्भ के लिए, हम एक घटक है कि सुरक्षा क्लाइंट पक्ष रूपों है कि dinamically संशोधित कर रहे हैं पर सक्षम बनाए रखने के लिए अनुमति देता है बनाया है, और क्षेत्रों या क्रियाओं जब ajax बनाने अनलॉक करने के लिए की जरूरत को हटा कहता है। आप इसे https://github.com/QTSdev/DynamicSecurity पर पा सकते हैं।

+0

घटक (और गिथब पेज) गायब हो गया है। क्या आपके पास एक नया लिंक है? – schnauss

संबंधित मुद्दे