2012-11-01 15 views
8

मैं खाताधारक उपयोगकर्ताओं के लिए अपने आवेदन में एक सदस्यता प्रकार की कार्यक्षमता जोड़ना चाहता हूं जैसे कि निश्चित अंतराल के बाद वे अपने खाते तक पहुंच नहीं पाएंगे? नोट: मैं डेटाबेस से अपना खाता हटाना नहीं चाहता हूं। मैंने अपने आवेदन में पहले से ही devise-2.1.2 स्थापित किया है। क्या किसी शरीर को कोई विचार है कि यह कैसे किया जा सकता है? मैं Ruby on rails पर नौसिखिया हूं इसलिए यदि आप कृपया चरणों की व्याख्या करते हैं तो यह मेरे लिए बहुत उपयोगी होगा।डेविस का उपयोग कर उपयोगकर्ताओं को कैसे लॉक करें?

उत्तर

18

वसीयत Devise Lockable Documentation

आप को :failed_attempts.

चरण 1 अपने config/initializers/devise.rb सेट lock_strategy सेट स्थापित करने के लिए में :lockable विकल्प चेक के साथ एक buil में समाधान है उपयोग करने के लिए:

# Defines which strategy will be used to lock an account. 
config.lock_strategy = :failed_attempts 

# Defines which key will be used when locking and unlocking an account 
config.unlock_keys = [ :time ] 

# Defines which strategy will be used to unlock an account. 
# :time = Re-enables login after a certain amount of time (see :unlock_in below) 
config.unlock_strategy = :time 

# Number of authentication tries before locking an account if lock_strategy 
# is failed attempts. 
config.maximum_attempts = 3 

# Time interval to unlock the account if :time is enabled as unlock_strategy. 
config.unlock_in = 2.hours 

चरण 2 आपका इस रूप में आप मॉडल के लिए ताला-युक्त जोड़ना चाहिए:

class Example < ActiveRecord::Base 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable, 
     :lockable 

चरण 3 माइग्रेशन वसीयत काम करने के लिए

class AddLockableToExamples < ActiveRecord::Migration 
    def change 
    add_column :examples, :failed_attempts, :integer, default: 0 
    add_column :examples, :unlock_token, :string 
    add_column :examples, :locked_at, :datetime 
    end 
end 

सादर उत्पन्न !!

+0

मैं इस बात को अपने दिमाग में साफ़ करना चाहता हूं कि 'विफल प्रयास' केवल उस स्थिति के लिए हैं यदि किसी उपयोगकर्ता ने कुछ समय के लिए साइन अप करने का प्रयास किया है। –

+0

इसके अलावा प्रलेखन का कहना है कि एक खाता लॉक करने के लिए एक समय प्रकार रणनीति का उपयोग किया जा सकता है। तो मैं सदस्यता के तुरंत बाद कुछ महीनों के लिए किसी उपयोगकर्ता को सदस्यता देना चाहता हूं, वह अपने खाते का उपयोग करने में सक्षम नहीं होगा। क्या यह संभव है? –

+0

यह लॉक करता है जब उपयोगकर्ता साइन इन करने के लिए x बार प्रयास करता है और आप अनलॉक_स्ट्रेटी को समय पर सेट कर सकते हैं। यही वही है जो आपको चाहिए! – felipeclopes

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