2014-04-29 6 views
10

मेरे पास उत्पाद नियंत्रक नामक एक नियंत्रक है, और मैंने .NET क्लाइंट एप्लिकेशन से PUT API कॉल के उद्देश्य के लिए set_status नाम की एक क्रिया बनाई है। मुझे सब ठीक से स्थापित किया गया है, लेकिन एक अनुरोध भेजने के बाद, मुझे "सीएसआरएफ टोकन प्रामाणिकता सत्यापित नहीं कर सकता" त्रुटि प्राप्त होती है।रेल 3.2 - नियंत्रक कार्रवाई के लिए सीएसआरएफ संरक्षण अक्षम करें

protect_from_forgery 

आदेश CSRF सुरक्षा को बायपास करने के लिए, मैं अपने उत्पाद नियंत्रक के लिए निम्न जोड़ दिया है:

skip_before_filter :set_status 

इस परिवर्तन के साथ परीक्षण के बाद मैं CSRF संरक्षण के लिए मेरे आवेदन नियंत्रक में निम्नलिखित है , मुझे अभी भी एक ही त्रुटि संदेश मिलता है। मेरी समझ के आधार पर, कोड की उपरोक्त पंक्ति को उत्पाद नियंत्रक में set_status कार्रवाई के लिए सीएसआरएफ सुरक्षा को अक्षम करना चाहिए, लेकिन ऐसा लगता है कि यह काम नहीं कर रहा है।

क्या किसी के पास कोई अंतर्दृष्टि है कि यह क्यों काम नहीं कर रहा है? अग्रिम बहुत बहुत धन्यवाद!

उत्तर

18

मैंने इसे समझ लिया!

skip_before_filter :verify_authenticity_token, :only => [:set_status] 

मैं भूल गया था कि protect_from_forgery बयान का अपना तरीकों बनाता है: यहाँ मेरी कोड है। उन तरीकों में से एक सत्यापन_authenticity_token है, और इसलिए मैंने सोचा था कि यह अधिक सरल था। मैं पहले अटक गया था क्योंकि मेरे पास सत्यापित_authenticity_token विधि नहीं थी, लेकिन मैंने वास्तव में ऐसा इसलिए किया क्योंकि यह स्वचालित रूप से जेनरेट हो गया है।

+1

रेल के हाल के संस्करणों में 'skip_before_filter' के बजाय 'skip_before_action' का उपयोग करें। (skip_before_filter को बहिष्कृत कर दिया गया है) –

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