🔑

Devise

Rails標準認証システム

DeviseはRailsで最も広く使われている認証gemです。

10のモジュール:

  • database_authenticatable — パスワードハッシュ化とログイン

  • registerable — 会員登録

  • recoverable — パスワードリセット

  • rememberable — 自動ログイン(Remember Me)

  • validatable — メール/パスワード検証

  • confirmable — メール認証

  • lockable — ログイン失敗時のアカウントロック

  • timeoutable — セッションタイムアウト

  • trackable — ログイン追跡

  • omniauthable — OAuth(Google、GitHub等)

自動生成されるヘルパー:

  • current_user — 現在ログインしているユーザー

  • user_signed_in? — ログイン状態確認

  • authenticate_user! — 未ログイン時リダイレクト

カスタマイズはコントローラ継承とビューオーバーライドで行います。

キーポイント

1

Gemfileにgem "devise"を追加しbundle install

2

rails generate devise:install → 初期設定ファイル生成

3

rails generate devise User → Userモデル + マイグレーション生成

4

rails db:migrate → devise関連テーブル生成

5

before_action :authenticate_user! → 認証が必要なコントローラに追加

6

current_user、user_signed_in?等のヘルパーを使用

メリット

  • 豊富な機能(10モジュール)
  • コミュニティが大きくドキュメントが豊富
  • セキュリティのベストプラクティス適用(bcrypt、CSRF)
  • OmniAuthでソーシャルログインを簡単追加

デメリット

  • カスタマイズが複雑になりうる
  • 魔法が多く内部動作の把握が困難
  • API専用アプリには過剰な機能
  • ビューカスタマイズ時にgenerate devise:viewsが必要

ユースケース

会員ベースのWebサービス Google/GitHub OAuthログイン メール認証フロー 管理者パネル認証