मैं अपने आवेदन में प्रमाणीकरण के लिए डेविस का उपयोग कर रहा हूं।
मैं कुछ उपयोगकर्ताओं को साइन इन करने से मना करता हूं - एक उपयोगकर्ता को किस तरह से अक्षम करें?
मैं अपने आवेदन में प्रमाणीकरण के लिए डेविस का उपयोग कर रहा हूं।
मैं कुछ उपयोगकर्ताओं को साइन इन करने से मना करता हूं - एक उपयोगकर्ता को किस तरह से अक्षम करें?
जवाबों:
इसको ऐसे करो:
मॉडल के is_active
लिए एक कॉलम बनाएं User
।
फिर User
मॉडल के नीचे कोड जोड़ें :
class User < ActiveRecord::Base
#this method is called by devise to check for "active" state of the model
def active_for_authentication?
#remember to call the super
#then put our own check to determine "active" state using
#our own "is_active" column
super and self.is_active?
end
end
अपडेट करें
मैट हगिन्स नोट के रूप में, विधि अब कहा जाता है active_for_authentication?
( प्रलेखन )
active_for_authentication?
सिर्फ के बजाय इसका नाम बदल दिया गया है active?
।
the method is now called active_for_authentication?
इसका मतलब है कि आपके विधि का नाम active_for_authentication?
इसके बजाय होना चाहिए active?
।
active_for_authentication?
एक सार्वजनिक तरीका होना चाहिए!
super and self.is_active?
को सरल बनाया जा सकता हैsuper && is_active?
User
मॉडल में एक कॉलम जोड़ें :allowed_to_log_in
:।
फिर इसे इसमें जोड़ें /app/models/user.rb
:
def active_for_authentication?
super and self.allowed_to_log_in?
end
यदि आप एक कस्टम संदेश के साथ उपयोगकर्ता को सूचित करना चाहते हैं तो आप इसे भी जोड़ सकते हैं:
def inactive_message
"You are not allowed to log in."
end
मुझे लगता है कि यह काफी महत्वपूर्ण है क्योंकि डेविस का मानक संदेश कहता है:
"आपका खाता अभी तक सक्रिय नहीं किया गया है।"
यह उपयोगकर्ताओं के लिए भ्रामक है और असली कारण यह है कि आपने उन्हें लॉग इन करने से "प्रतिबंधित" किया है।
आप प्रमाणीकरण करना चाहते हैं, प्रमाणीकरण नहीं। डेविस केवल आत्मकेंद्रित करता है, हालांकि।
Ie devise केवल आपको बताता है कि एक उपयोगकर्ता वह है जो वह कहता है कि वह है।
साइट का उपयोग करने से मना करने के लिए आपको कुछ और चाहिए।
प्राधिकरण एक लोकप्रिय विषय है और इसमें रत्नों की एक पूरी सूची है जो आपकी सहायता कर सकते हैं:
http://ruby-toolbox.com/categories/rails_authorization.html
अपना चयन करें।
लगता है कि आप कैनकन में रुचि रखते हैं