2012-11-01 14 views
8

私はアカウント所有者のユーザーのために自分のアプリケーションにサブスクリプションタイプの機能を追加したいのですが、一定の時間が経過するとアカウントにアクセスできなくなりますか?注:私はデータベースから自分のアカウントを削除したくない。私は既にアプリケーションにdevise-2.1.2をインストールしました。どのようにしてそれを行うことができますどのようなアイデアを持っていますか?私はRuby on railsへの初心者ですので、あなたがステップを説明してくれればとても助かります。Deviseを使用してユーザーをロックする方法はありますか?

答えて

18

工夫がDevise Lockable Documentation

:lockableオプションチェックと釜インソリューションを持っているあなたは:failed_attempts.

ステップ1lock_strategyセットを設定する必要があり、あなたのconfig /初期化子/ devise.rbを設定します。使用する:

# 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 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 

よろしくを作るためにマイグレーションを生成

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

ステップ3 !!:はあなたがこのようあなたのモデルにロック可能なを追加する必要があります

+0

「失敗した試行」は、あるユーザーが一定回数サインアップしようとした場合にのみ、その状況のた​​めのものです。 –

+0

また、ドキュメントでは、アカウントをロックするためにタイムタイプ戦略を使用できると述べています。だから、私は数ヶ月間、サブスクリプションが終わるとすぐに彼のアカウントを使用することができないユーザーにサブスクリプションを与えたいと思う。これは可能ですか? –

+0

ユーザーはx回のログイン試行でロックし、unlock_strategyを時間に設定することができます。それがあなたが必要とするものです! – felipeclopes

関連する問題