Open1
Ruby Rails使用者認証 Devise ライブラリ!!
Devise ?! Ruby Rails 認証ライブラリ 提供する機能
DeviseはRuby on Railsアプリケーションでユーザー認証を簡単に実装するための強力なライブラリです。Deviseが提供するすべての機能とモジュールについて詳しく説明します。
Deviseのモジュール
Deviseは10個の主要なモジュールを提供しており、それぞれが特定の認証機能を提供します。必要に応じて、これらのモジュールを選択して使用できます。
- Database Authenticatable
機能: ユーザーのパスワードを安全にハッシュ化してデータベースに保存し、ログイン時にパスワードを検証します。
設定: デフォルトで含まれており、パスワードはbcryptアルゴリズムを使用してハッシュ化されます。
devise :database_authenticatable
- Registerable
機能: ユーザーが新しいアカウントを登録し、アカウントを編集または削除できるようにします。
設定: ユーザー登録、アカウント編集、アカウント削除機能を提供します。
devise :registerable
- Recoverable
機能: ユーザーがパスワードを忘れた場合にパスワードリセットのメールを送信し、それを通じてパスワードをリセットできるようにします。
設定: パスワードリセット機能を提供します。
devise :recoverable
- Rememberable
機能: ユーザーがブラウザを閉じて再度開いたときにもログイン状態を保持します。
設定: "Remember me" 機能を提供します。
devise :rememberable
- Trackable
機能: ユーザーのログイン情報を追跡します。ログイン回数、最後のログイン時間、最後のログインIPアドレスなどを記録します。
設定: ユーザーの活動を追跡する機能を提供します。
devise :trackable
- Validatable
機能: メールアドレスとパスワードの有効性を検証します。デフォルトではメールアドレスの形式とパスワードの長さを検証します。
設定: メールアドレスとパスワードの有効性を検証する機能を提供します。
devise :validatable
- Confirmable
機能: ユーザーがメールを確認しなければアカウントを有効化できないようにします。
設定: メール確認機能を提供します。
devise :confirmable
- Lockable
機能: 指定された回数のログイン試行が失敗するとアカウントをロックします。アカウントのロック解除は一定時間が経過するか、メールを通じて行います。
設定: アカウントロック機能を提供します。
devise :lockable
- Timeoutable
機能: 一定時間活動がない場合にセッションを終了させます。
設定: セッションタイムアウト機能を提供します。
devise :timeoutable
- Omniauthable
機能: Omniauthを使用して外部プロバイダー(Google、Facebook、Twitterなど)を通じた認証をサポートします。
設定: ソーシャルログイン機能を提供します。
devise :omniauthable
Deviseのインストールと設定
- GemfileにDeviseを追加
まず、GemfileにDeviseを追加します:
gem 'devise'
その後、バンドルインストールを実行します:
bundle install
- Deviseの初期化
次に、Deviseをインストールして初期設定を行います:
rails generate devise:install
このコマンドは、Deviseの初期化ファイル(config/initializers/devise.rb)とロケールファイル(config/locales/devise.en.yml)を生成します。
- Userモデルの生成
Deviseを使用してUserモデルを生成します。既にUserモデルが存在する場合は、次のセクションに進んでください。
rails generate devise User
このコマンドはUserモデルと関連するマイグレーションファイルを生成します。生成されたマイグレーションファイルを確認し、必要に応じて修正した後、マイグレーションを実行します:
rails db:migrate
- Deviseのルートを追加
config/routes.rbファイルにDeviseのルートを追加します:
Rails.application.routes.draw do
devise_for :users
# その他のルート
end
- Deviseのビューを生成(オプション)
Deviseのビューをカスタマイズするには、次のコマンドを実行してビューを生成します:
rails generate devise:views
このコマンドは、app/views/deviseディレクトリにDeviseのビューを生成します。これらのファイルを編集してカスタマイズできます。
- Deviseのコントローラーをカスタマイズ
Deviseのデフォルトのコントローラーをカスタマイズするには、次のコマンドを実行してコントローラーを生成します:
rails generate devise:controllers users
このコマンドは、app/controllers/usersディレクトリにDeviseのコントローラーファイルを生成します。これらのファイルを編集してカスタマイズできます。
- Strong Parametersの設定
app/controllers/application_controller.rbファイルを開き、次のように編集します:
class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:username, :other_custom_param])
devise_parameter_sanitizer.permit(:account_update, keys: [:username, :other_custom_param])
end
end
まとめ
Deviseは、ユーザー認証を簡単に実装するための多機能なライブラリです。提供されるモジュールを組み合わせて、必要な認証機能を実装できます。Deviseの基本的なインストールと設定を行い、必要に応じてビューやコントローラーをカスタマイズすることで、強力で柔軟な認証システムを構築できます。