Fortify とは
Laravel Fortify は、フロントエンドに依存しない認証バックエンド実装です。ログイン・登録・パスワードリセット・メール確認・2FA・パスキーに必要なルートとコントローラーをすべて提供します。Fortify は UI を持ちません。スターターキットや独自の UI から Fortify のルートにリクエストを送ることで機能します。
歴史:Jetstream から現行スターターキットまで
なぜ現行スターターキットでも Fortify が使われているのか
当初の React/Vue スターターキットは Fortify なしで実装されていました。しかし 二要素認証(2FA)への対応が必要になった際、Fortify がそのまま採用されたことで、認証全体が Fortify ベースに切り替わりました。 Fortify は「フロントエンド非依存」として設計されているため、Inertia を使ったスターターキットとの相性が良く、現在も使われ続けています。Fortify は現在、最も長く使われ続けている Laravel 公式認証パッケージです。2020年の登場以来、Jetstream → 現行スターターキットと形を変えながら現役を続けています。
現行スターターキットの構成
React/Vue スターターキットでは以下のファイルで Fortify が設定されています。app/Providers/FortifyServiceProvider.php— ビュー・アクション・レート制限の登録config/fortify.php— 有効にする機能と認証設定
config/fortify.php の主要設定
Features::passkeys())はデフォルトで有効になっていません。有効化するには features 配列に追加します。
FortifyServiceProvider の設定
スターターキットの FortifyServiceProvider は 3 つの役割を担います。
1. アクションの設定
app/Actions/Fortify/ に配置されたクラスでユーザー作成とパスワードリセットのロジックをカスタマイズします。バリデーションやハッシュ処理はここに集約されています。
2. ビューの設定
Features::enabled() で機能フラグを確認してビューに渡しているのがポイントです。
Blade アプリでは
Inertia::render(...) の代わりに view('auth.login') を返します。フロントエンドを変えても FortifyServiceProvider 側だけ修正すれば認証ロジックは変わりません。3. レート制限の設定
loginリミッター: メールアドレスと IP アドレスの組み合わせで制限(ブルートフォース対策)two-factorリミッター: セッション内のログイン試行 ID で制限
config/fortify.php の limiters キーと一致するキーを RateLimiter::for() に登録します。
主な機能と登録されるルート
Fortify が登録する主なルートを機能別に整理します。php artisan route:list --name=fortify または単純に php artisan route:list で実際に登録されているルートを確認できます。
二要素認証(2FA)
スターターキットではFeatures::twoFactorAuthentication() が有効化されています。confirm と confirmPassword はどちらも true に設定されています。
2FA の設定画面から、ユーザーは以下の操作を行えます。
1
2FA を有効化する
/user/two-factor-authentication に POST リクエストを送信します。成功するとセッションに two-factor-authentication-enabled ステータスがセットされます。2
QR コードを確認する
/user/two-factor-qr-code に GET リクエストを送ると、認証アプリに読み込む QR コードの SVG が返されます。3
認証コードで確認する
/user/confirmed-two-factor-authentication に POST リクエストでコードを送信し、設定を完了します。4
リカバリーコードを保存する
/user/two-factor-recovery-codes に GET リクエストを送り、リカバリーコードを取得して安全な場所に保存します。パスキー
パスキーは Fortify の機能として最近追加されました。WebAuthn を使ったパスワードレス認証で、Face ID・Touch ID・Windows Hello・ハードウェアセキュリティキーに対応しています。有効化
config/fortify.php の features 配列に追加します。
User モデルに PasskeyUser コントラクトと PasskeyAuthenticatable トレイトを追加します。
config/fortify.php の passkeys キーで管理します。
Fortify のパスキーは内部で
laravel/passkeys Composer パッケージをラップしています。laravel/passkeys の設定ファイルを公開する必要はなく、config/fortify.php の passkeys キーが優先されます。@laravel/passkeys JS クライアント、React/Vue/Svelte ヘルパーなど)については、パスキー初期調査も参照してください。
関連ページ
カスタム認証ガード
Guard・StatefulGuard インターフェースを実装してカスタム認証ガードを作る方法を解説します。
公式ドキュメント: Laravel Fortify
インストール・全機能・カスタマイズの詳細は公式ドキュメントを参照してください。