2012-08-08 4 views
10

अंत समाधान नहीं मिला:CakePHP 2.1 सुरक्षा घटक के साथ एक jQuery ajax कॉल सक्रिय जिससे

अगर किसी को भी इस समस्या अपने beforefilter में रखते है। केक 2,3

को

$this->Security->unlockedActions = array('givestar'); 

और अद्यतन libs समस्या:

मैं सुरक्षा घटक मेरी ajax कॉल पर मुझे blackholing के साथ संघर्ष कर रहा हूँ।

var id = 1;

$.ajax({ 
    type: "post", 
    url: "/messages/givestar/", 
    data: {"id" : id}, 
    dataType: "json" 
}); 

मैं केवल संदेश जहां आईडी = आईडी

लेकिन सुरक्षा घटक मुझे मेरे सभी ajax कॉल पर Blackholing है अद्यतन करने के लिए नियंत्रक के लिए आईडी भेजने की कोशिश कर रहा हूँ।

कोई भी जानता है कि मैं इसे सुरक्षा घटक के साथ कैसे सक्रिय कर सकता हूं ??

धन्यवाद!

आप कमाल हैं!

-Tom

सुझाव ????

UPDATE2 मुझे कुछ परीक्षण के बाद ब्लैकहोल से AUTH त्रुटि मिलती है।

From Book: 
‘auth’ Indicates a form validation error, or a controller/action mismatch error. 

मैंने सभी एसीओ नोड्स को दो बार चेक किया है, वे अच्छे हैं। मैं अपने AJAX कॉल पर सुरक्षा घटक से एक फॉर्म वाल्डेशन त्रुटि के खिलाफ झुका रहा हूँ।

अद्यतन:

AppController.php

public $components = array(
     'Acl', 
     'Auth', 
     'Session', 
    'Security', 
    'Cookie' 
    ); 
public function beforeFilter() { 
    $this->Security->blackHoleCallback = 'blackhole'; 
} 
public function blackhole($type) { 
    $this->Session->setFlash(__('ERROR: %s',$type), 'flash/error'); 
} 

MessagesController.php

public $components = array('RequestHandler'); 

     public function beforeFilter() { 
      parent::beforeFilter(); 
     } 

public function givestar() { 
     $this->autoRender = false; 
      if ($this->request->is('ajax')) { 

       echo 'Working'; 
      } 
     return; 
    } 
+0

सुरक्षा घटक सक्रिय ?? इसका मतलब है कि आप 'आईडी' एन्क्रिप्ट करना चाहते हैं या इसे अजाक्स कॉल में छिपाना चाहते हैं? – coolguy

+0

http://book.cakephp.org/2.0/en/core-libraries/components/security-component.html – Tom

+0

मेरा बुरा आह। मैं एक केक php आदमी नहीं हूँ .. मैं ज़ेंड फ्रेमवर्क + Jquery के साथ। SO में केकफ विशेषज्ञों के बहुत सारे हैं ..आपको जल्द ही जो चाहिए वह आपको मिलेगा :) – coolguy

उत्तर

7

beforefilter में:

$this->Security->unlockedActions = array('givestar'); 
2

SecurityComponent लाइन 396:

if (!isset($controller->request->data['_Token'])) { 
    if (!$this->blackHole($controller, 'auth')) { 
     return null; 
    } 
} 

तो मुझे लगता है कि आप इस क्रिया को आप अतिरिक्त उत्पन्न '_Token' कुंजी के साथ डेटा भेजना चाहिए सुरक्षित करने के लिए चाहते हैं। यह कुंजी फॉर्म-> सुरक्षित ($ फ़ील्ड) विधि का उपयोग करके उत्पन्न होती है (अकल्पली विधि उचित मूल्यों के साथ छिपे हुए इनपुट उत्पन्न करती है)।

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