Skip to main content

はじめに

メール認証(Email Verification)は、ユーザーが登録したメールアドレスを実際に所有しているか確認する仕組みです。Laravelは確認メールの送信と検証処理を標準で提供するため、あなたは最小限の実装で安全な認証フローを構築できます。
スターターキットを使う場合は、認証画面とメール認証フローがすでに組み込まれています。手動実装する場合は、このページの手順でモデル・ルート・ビューを自分で定義してください。

モデルとデータベースの準備

MustVerifyEmail を実装する

App\Models\UserIlluminate\Contracts\Auth\MustVerifyEmail を実装していることを確認してください。
このインターフェースを追加すると、新規登録ユーザーに確認メールが自動送信されます。スターターキットを使わずに登録処理を実装している場合は、登録成功後に Registered イベントを発火してください。

email_verified_at カラムを確認する

users テーブルに email_verified_at カラムが必要です。通常はデフォルトの 0001_01_01_000000_create_users_table.php に含まれています。

ルーティング(3つのルート)

メール認証では、verification.noticeverification.verifyverification.send の3ルートを定義します。
1

認証通知表示ルート(verification.notice)を定義する

未認証ユーザーに「メールを確認してください」と表示する画面を返します。
2

認証ハンドラールート(verification.verify)を定義する

メール内リンクを踏んだときに、署名付きURLを検証して認証完了します。
3

再送信ルート(verification.send)を定義する

ユーザーが確認メールを紛失したときに再送信します。

ルートの保護

認証済みユーザーだけにアクセスを許可するには、verified ミドルウェアを使います。通常は auth と組み合わせます。
未認証ユーザーがアクセスすると、Laravelは自動的に verification.notice へリダイレクトします。

カスタマイズ

確認メール本文をカスタマイズするには、AppServiceProviderboot メソッドで VerifyEmail::toMailUsing を設定します。

イベント

メール認証時には Illuminate\Auth\Events\Verified イベントが発火されます。スターターキットでは自動的に扱われますが、手動実装では必要に応じてイベント処理を追加してください。
最終更新日 2026年5月13日