🔑
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ログイン
メール認証フロー
管理者パネル認証