🕌

【devise】アカウントロックを実装する計画⇒実装⇒課題

2023/08/15に公開

はじめに

形を作るのに精一杯で、セキュリティー面の考慮がなされていませんでした。
まずは、ログイン時のパスワード入力の回数制限、失敗した際のアカウントロックを実装しようと思います。

今回の実装目標:パスワード入力の回数制限、失敗時のアカウントロック

計画

今回はログイン機能を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点が、追加作業になります。

普段つかっいるアプリケーションの些細な部分も、実装は難しいものですね…。

参考にしたサイト様
https://qiita.com/hiroky_814/items/8b155875d25ad06cc8c5

Discussion