Open1

Ruby Rails使用者認証 Devise ライブラリ!!

シモヤケシモヤケ

Devise ?! Ruby Rails 認証ライブラリ 提供する機能

DeviseはRuby on Railsアプリケーションでユーザー認証を簡単に実装するための強力なライブラリです。Deviseが提供するすべての機能とモジュールについて詳しく説明します。

Deviseのモジュール

Deviseは10個の主要なモジュールを提供しており、それぞれが特定の認証機能を提供します。必要に応じて、これらのモジュールを選択して使用できます。

  1. Database Authenticatable
    機能: ユーザーのパスワードを安全にハッシュ化してデータベースに保存し、ログイン時にパスワードを検証します。
    設定: デフォルトで含まれており、パスワードはbcryptアルゴリズムを使用してハッシュ化されます。
devise :database_authenticatable
  1. Registerable
    機能: ユーザーが新しいアカウントを登録し、アカウントを編集または削除できるようにします。
    設定: ユーザー登録、アカウント編集、アカウント削除機能を提供します。
devise :registerable
  1. Recoverable
    機能: ユーザーがパスワードを忘れた場合にパスワードリセットのメールを送信し、それを通じてパスワードをリセットできるようにします。
    設定: パスワードリセット機能を提供します。
devise :recoverable
  1. Rememberable
    機能: ユーザーがブラウザを閉じて再度開いたときにもログイン状態を保持します。
    設定: "Remember me" 機能を提供します。
devise :rememberable
  1. Trackable
    機能: ユーザーのログイン情報を追跡します。ログイン回数、最後のログイン時間、最後のログインIPアドレスなどを記録します。
    設定: ユーザーの活動を追跡する機能を提供します。
devise :trackable
  1. Validatable
    機能: メールアドレスとパスワードの有効性を検証します。デフォルトではメールアドレスの形式とパスワードの長さを検証します。
    設定: メールアドレスとパスワードの有効性を検証する機能を提供します。
devise :validatable
  1. Confirmable
    機能: ユーザーがメールを確認しなければアカウントを有効化できないようにします。
    設定: メール確認機能を提供します。
devise :confirmable
  1. Lockable
    機能: 指定された回数のログイン試行が失敗するとアカウントをロックします。アカウントのロック解除は一定時間が経過するか、メールを通じて行います。
    設定: アカウントロック機能を提供します。
devise :lockable
  1. Timeoutable
    機能: 一定時間活動がない場合にセッションを終了させます。
    設定: セッションタイムアウト機能を提供します。
devise :timeoutable
  1. Omniauthable
    機能: Omniauthを使用して外部プロバイダー(Google、Facebook、Twitterなど)を通じた認証をサポートします。
    設定: ソーシャルログイン機能を提供します。
devise :omniauthable

Deviseのインストールと設定

  1. GemfileにDeviseを追加
    まず、GemfileにDeviseを追加します:
gem 'devise'

その後、バンドルインストールを実行します:

bundle install
  1. Deviseの初期化
    次に、Deviseをインストールして初期設定を行います:
rails generate devise:install

このコマンドは、Deviseの初期化ファイル(config/initializers/devise.rb)とロケールファイル(config/locales/devise.en.yml)を生成します。

  1. Userモデルの生成
    Deviseを使用してUserモデルを生成します。既にUserモデルが存在する場合は、次のセクションに進んでください。
rails generate devise User

このコマンドはUserモデルと関連するマイグレーションファイルを生成します。生成されたマイグレーションファイルを確認し、必要に応じて修正した後、マイグレーションを実行します:

rails db:migrate
  1. Deviseのルートを追加
    config/routes.rbファイルにDeviseのルートを追加します:
Rails.application.routes.draw do
  devise_for :users
  # その他のルート
end
  1. Deviseのビューを生成(オプション)
    Deviseのビューをカスタマイズするには、次のコマンドを実行してビューを生成します:
rails generate devise:views

このコマンドは、app/views/deviseディレクトリにDeviseのビューを生成します。これらのファイルを編集してカスタマイズできます。

  1. Deviseのコントローラーをカスタマイズ
    Deviseのデフォルトのコントローラーをカスタマイズするには、次のコマンドを実行してコントローラーを生成します:
rails generate devise:controllers users

このコマンドは、app/controllers/usersディレクトリにDeviseのコントローラーファイルを生成します。これらのファイルを編集してカスタマイズできます。

  1. 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の基本的なインストールと設定を行い、必要に応じてビューやコントローラーをカスタマイズすることで、強力で柔軟な認証システムを構築できます。