मैं प्रमाणीकरण के लिए चिंतन करना के साथ, एक रेल 4.2.x एप्लिकेशन है - क्या मैं कई नियंत्रकों की है।मैं कैसे एक को छोड़कर सभी नियंत्रकों और कार्यों पर चलाने के लिए एक before_action कर सकता हूँ?
मैं वसीयत authenticate_user चाहते हैं! घर नियंत्रक सूचकांक कार्रवाई को छोड़कर सभी नियंत्रकों और कार्यों पर चलाने के लिए विधि। (! बेशक, authenticate_user ही ख्याल है कि वसीयत लॉगिन की कार्रवाइयां करके जाना लेता है)
मैं सुनिश्चित कर सकते हैं कि हर नियंत्रक कार्रवाई application_controller.rb में before_action चलाता है:
class ApplicationController < ActionController::Base
before_action :authenticate_user!
...
end
मैं भी एक विशिष्ट सेट प्रतिबंधित कर सकते हैं पर कार्य सभी नियंत्रकों की:
class ApplicationController < ActionController::Base
before_action :authenticate_user!, except: [:index]
...
end
लेकिन मैं अभी घर/सूचकांक बनाने के लिए कैसे एक अपवाद हो करने के लिए नहीं दिख रहा है।
मैं, ज़ाहिर है, मैन्युअल before_action :authenticate_user!
हर नियंत्रक को जोड़ने के लिए, और सूचकांक कार्रवाई के लिए घर नियंत्रक के लिए एक अपवाद जोड़ सकते हैं। लेकिन यह बहुत शुष्क नहीं है, और यदि मैं नए नियंत्रक जोड़ता हूं, तो मुझे उनमें से प्रत्येक को पहले से जोड़ने के लिए याद रखना होगा।
सुनिश्चित करें कि आप ApplicationController में अपने before_action घोषित किया है? –
कभी नहीं। समस्या यह है कि मैंने प्रमाणीकरण नियंत्रक में स्वयं की कार्रवाई से पहले नहीं छोड़ा था, इसलिए यह हमेशा कोई फर्क नहीं पड़ता कि इससे कोई फर्क नहीं पड़ता। –