2011-04-14 16 views
82

मेरे पास एक रेल ऐप है जो एक आईफोन एप्लिकेशन के लिए कुछ एपिस प्रदान करता है। मैं सही सीएसआरएफ टोकन प्राप्त करने पर ध्यान दिए बिना संसाधन पर पोस्ट करने में सक्षम होना चाहता हूं। मैंने कुछ विधि की कोशिश की जो मैं यहां स्टैक ओवरफ्लो में देखता हूं लेकिन ऐसा लगता है कि वे अब रेल पर काम नहीं करते हैं 3. मेरी मदद करने के लिए धन्यवाद।रेल में सीएसआरएफ टोकन बंद करें 3

उत्तर

132

नियंत्रक में जहां CSRF जांच को निष्क्रिय करना चाहते:

skip_before_action :verify_authenticity_token 

या कुछ तरीकों के अलावा सब कुछ के लिए उसे निष्क्रिय करने:

skip_before_action :verify_authenticity_token, :except => [:update, :create] 

या केवल निर्दिष्ट तरीकों निष्क्रिय करने के लिए:

skip_before_action :verify_authenticity_token, :only => [:custom_auth, :update] 

अधिक जानकारी: RoR Request Forgery Protection

+1

यह नियमित ब्राउज़र-सुलभ रूपों और एपीआई अंतिम बिंदुओं का एक मिश्रण है कि क्षुधा के लिए सही जवाब है। मार्कस प्रोस्के का जवाब सही होगा यदि आप पूरी तरह से सुनिश्चित थे कि आपके ऐप में कोई ब्राउज़र-पहुंच योग्य फॉर्म नहीं है। –

+0

यह कहां जाता है? क्या होगा यदि कुछ मणि के नियंत्रक भाग? –

102

Rails3 में आप विशेष विधियों के लिए अपनी नियंत्रक में CSRF टोकन निष्क्रिय कर सकते हैं:

protect_from_forgery :except => :create 
+12

किसी को पढ़ने के लिए, ध्यान दें कि यह 'एप्लिकेशन कंट्रोलर' में जाना चाहिए। माइक लुईस की प्रतिक्रिया नीचे ('skip_before_filter: verify_authenticity_token') प्रति-नियंत्रक आधार पर इसे अक्षम करने का तरीका है, यह मानते हुए कि नियंत्रक को 'एप्लिकेशन नियंत्रक' से प्राप्त होता है। – NudeCanalTroll

+0

लगता है कि यह असुरक्षित है http://stackoverflow.com/questions/10676018/security-safe-to-disable-csrf-tokens-for-json-rails-calls। तुम क्या सोचते हो? क्या यह? – juanpastas

+0

@NudeCanalTroll क्या आप इसे नियंत्रक में डालने का मतलब है जहां मैं चाहता हूं कि यह काम न करे? – BlackDivine

28
रेल 4 के साथ

, अब आप skip_before_action बजाय skip_before_filter में लिखने के लिए विकल्प होता है।

# Works in Rails 4 and 5 
skip_before_action :verify_authenticity_token 

या

# Works in Rails 3 and 4 (deprecated in Rails 4 and removed in Rails 5) 
skip_before_filter :verify_authenticity_token 
+0

क्या अंतर है? –

+5

अगर मुझे सही याद है, तो फिल्टर बहिष्कृत किया गया है – nruth

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