रेल 3.2 का उपयोग करना।कुछ (सभी नहीं) नियंत्रकों के लिए HTTP बेसिक ऑथ
मेरे पास आधा दर्जन नियंत्रक हैं, और कुछ (लेकिन सभी नहीं) http_basic_authenticate_with
के साथ उनकी रक्षा करना चाहते हैं।
मैं मैन्युअल रूप से प्रत्येक नियंत्रक को http_basic_authenticate_with
जोड़ना नहीं चाहता (मैं भविष्य में एक और नियंत्रक जोड़ सकता हूं और इसे सुरक्षित करना भूल सकता हूं!)। ऐसा लगता है कि इसका उत्तर application_controller.rb
में :except
तर्क के साथ रखना है जो नियंत्रकों को सूचीबद्ध करेगा जो सुरक्षित नहीं होना चाहिए। समस्या यह है,: को छोड़कर खंड विधि के नाम के बजाय बाहरी नियंत्रक मॉड्यूल के नाम, उदाहरण के लिए चाहता है:
http_basic_authenticate_with :name => 'xxx', :password => 'yyy', :except => :foo, :bar
तो फिर मैंने सोचा था कि "रुको, के बाद से मैं पहले से ही routes.rb
में वर्गीकृत किया संरक्षित नियंत्रकों है, चलो यह वहाँ डाल दें। " तो मैं अपने मार्गों में यह करने की कोशिश की:
scope "/billing" do
http_basic_authenticate_with :name ...
resources :foo, :bar ...
end
लेकिन अब मैं
undefined method `http_basic_authenticate_with'
इस दृष्टिकोण का सबसे अच्छा तरीका क्या है मिल सकता है?
एक विकल्प एक 'वर्ग ProtectedController
यदि आप प्रमाणीकरण के लिए तैयार होने का उपयोग करते हैं, तो आप रेल के बजाय devise के साथ मूल लेख सक्षम कर सकते हैं - https://github.com/plataformatec/devise/wiki/How-To:-Use-HTTP-Basic- प्रमाणीकरण - शायद आपके मामले में प्रासंगिक नहीं है? – house9
सर्जीओ, जो मुझे उसी स्थान पर वापस रखेगा जिसे मैं टालने की कोशिश कर रहा हूं - मुझे मैन्युअल रूप से प्रत्येक नए नियंत्रक को मैन्युअल रूप से जोड़ना होगा जिसे मैं संरक्षित करना चाहता हूं। अगर मैं ऐसा करने के लिए तैयार था, तो मैं बस प्रत्येक नियंत्रक में http_base_authenticate लाइन डाल सकता था। – shacker