मैं before_filter :authenticate_user!
में बनाया गया डेविस का उपयोग कर रहा हूं। यदि कोई उपयोगकर्ता फ़िल्टर से पहले विफल रहता है (लॉग आउट होने पर कोई कार्रवाई करने का प्रयास करता है) तो मैं अपने एप्लिकेशन सहायक में अपनी खुद की कस्टम विधि कॉल करना चाहता हूं। मैं यह कैसे और कहां कर सकता हूं?पूर्वाग्रह के साथ पहले_फिल्टर
उत्तर
मैं user_signed_in?
का उपयोग करने वाले फ़िल्टर से पहले एक कस्टम लिखूंगा। यह सिर्फ एक बूलियन लौटाएगा, और authenticate_user!
करता है कि किसी भी रीडायरेक्ट-प्रकार क्रियाओं को नहीं करता है।
तो, अगर आप इस तरह फिल्टर से पहले एक लिख सकते हैं:
before_filter :custom_user_auth
...
def custom_user_auth
unless user_signed_in?
# Do custom stuff, ultimately restricting access to the
# ...protected resource if it needs to be
end
end
ध्यान दें कि इस फिल्टर से पहले अनधिकृत उपयोगकर्ताओं से अपने संसाधन रक्षा नहीं करेंगे जब तक कि unless
बयान के अंदर क्षेत्र पुनर्निर्देश या बना देता है।
क्या मैं अपने एप्लिकेशन नियंत्रक में विधि डाल सकता हूं? – user730569
यदि आप एकाधिक नियंत्रकों में पहले फ़िल्टर का उपयोग करने की योजना बना रहे हैं, जिनमें से प्रत्येक एप्लिकेशन कंट्रोलर का विस्तार करता है, तो मैं वहां फ़ंक्शन को परिभाषित करता हूं। हालांकि, मैं निश्चित रूप से एप्लिकेशन नियंत्रक में 'pre_filter' लाइन नहीं डालूंगा, क्योंकि आप शायद कुछ ही मामलों में इसका उपयोग करना चाहते हैं। – andrewmitchell
before_filter :authenticate_user!
पर कॉल करने के बजाय अपने नियंत्रक में अपना स्वयं का फ़ंक्शन लिखें जो authenticate_user!
पर कॉल करता है। कुछ ऐसा:
before_filter :logged_in
...
private
def logged_in
your_function
authenticate_user!
end
आप प्राधिकरण के लिए कैनकन का उपयोग करने में लग रहे हैं। –