🕌
【devise】アカウントロックを実装する計画⇒実装⇒課題
はじめに
形を作るのに精一杯で、セキュリティー面の考慮がなされていませんでした。
まずは、ログイン時のパスワード入力の回数制限、失敗した際のアカウントロックを実装しようと思います。
今回の実装目標:パスワード入力の回数制限、失敗時のアカウントロック
計画
今回はログイン機能をdeviseで実装しています。
deviseの設定を変える記述を追加するだけで、実装できるはず。
何をするか:devise.rbに記述を追加する
つまずいたところ
- devise.rbが見つからない
普通のmodelを開いてしまった。
場所はここ。
config/initializers/devise.rbどこに入っているか忘れます…。
実装
この部分がパスワード入力のアカウントロックに関する記述になります。最初はコメントアウトしてあるので、必要な部分のコメントアウトを外していきます。
-
deviceの機能を有効にするため:lockableを追加します。
-
migrationを実行
-アカウントロック用のカラムをDBに追加するため、マイグレーションファイルを作成します。
rails g migration add_lockable_to_devise
- 追加するカラムの内容を記載する
add_column :users, :failed_attempts, :integer, default: 0, null: false # Only if lock strategy is :failed_attempts
add_column :users, :unlock_token, :string # Only if unlock strategy is :email or :both
add_column :users, :locked_at, :datetime
add_index :users, :unlock_token, unique: true
- migrateを実行してカラムを追加する
rails db:migrate
結果
以上で目標であるアカウントロックはじっそうできました。
改善点、課題
- パスワードを間違えた際のメッセージがない
- ロックがかかった際は1時間立たないと再ログインできない旨のメッセージがない。
以上2点が、追加作業になります。
普段つかっいるアプリケーションの些細な部分も、実装は難しいものですね…。
参考にしたサイト様
Discussion