【rails・devise】アカウントロックを実装する方法
前提
deviseを使ったRailsプロジェクトを作成しており、ログイン機能が実装されていること
実装手順
まずは以下のconfig/initializers/devise.rbを編集する
コード
# ==> Configuration for :lockable
# Defines which strategy will be used to lock an account.
# :failed_attempts = Locks an account after a number of failed attempts to sign in.
# :none = No lock strategy. You should handle locking by yourself.
config.lock_strategy = :failed_attempts # アカウントロック機能を使用するか
# Defines which key will be used when locking and unlocking an account
config.unlock_keys = [ :email ] # ロック、アンロックに使用する項目を指定する
# Defines which strategy will be used to unlock an account.
# :email = Sends an unlock link to the user email
# :time = Re-enables login after a certain amount of time (see :unlock_in below)
# :both = Enables both strategies
# :none = No unlock strategy. You should handle unlocking by yourself.
config.unlock_strategy = :email # アンロックする方法を選択。今回はemailを使用
# Number of authentication tries before locking an account if lock_strategy
# is failed attempts.
config.maximum_attempts = 5 # アンロックまでの試行ミス回数
# Time interval to unlock the account if :time is enabled as unlock_strategy.
config.unlock_in = 1.hour # もしアカウントを時間でアンロックする場合は、こちらも設定
# Warn on the last attempt before the account is locked.
config.last_attempt_warning = true # アカウントロック前の最後の試行で警告するか選択。今回は警告ありを設定
もしlockable用のカラムが追加されていない場合は、追加します。
※またmodelにもlockableを記載します。
※最後サーバーを一度立ち上げ直さないと、設定が反映されないで予期せぬ挙動をする時があります。サーバーを立ち上げ直してください。
詳細はこちらがわかりやすいので、ぜひ参考にしてください。