2012-11-01 77 views
8

我想在我的應用中爲帳戶持有者用戶添加訂閱類型功能,以便在固定的時間間隔後他們將無法訪問他們的帳戶?注意:我不想從數據庫中刪除他們的帳戶。我已經在我的應用程序中安裝了devise-2.1.2。有沒有任何機構有任何想法如何做?我是Ruby on rails的新手,所以如果你請解釋一下這些步驟,這對我很有幫助。如何使用Devise鎖定用戶?

回答

18

設計與在Devise Lockable Documentation

你必須在lock_strategy組設置爲:failed_attempts.

步驟1 設置你的配置/初始化/ devise.rb的: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次登錄並鎖定時,它會鎖定,您可以將unlock_strategy設置爲time。這就是你需要的! – felipeclopes

相關問題