【初心者向け】Laravel Breezeにメール認証を追加する方法

コンニチハ

パンに塗り塗りジャム太郎です!

今回のテーマは「Laravelで簡単ログイン機能を作る方法」についてです。


はじめに

Laravelでユーザー登録機能を作ると「登録した人が本当に正しいメールアドレスを使っているか?」を確認したくなります。
これを実現するのがメール認証(Email Verification)です。

実はLaravel Breezeでも、簡単にメール認証機能を有効化できます!
今回はその手順をわかりやすく解説します。


前提


①メール認証機能を有効化する

Laravelは標準でメール認証機能がビルトインされています。
まずは User モデルに MustVerifyEmail インターフェースを実装します。

app/Models/User.php を開いて以下を追加:

use Illuminate\Contracts\Auth\MustVerifyEmail;

class User extends Authenticatable implements MustVerifyEmail
{
    // 既存のコード
}

これだけで基本機能は有効になります。


②メール送信設定を行う

実際にメールを送信するには、.env ファイルでメールサーバーの設定が必要です。

例えばMailtrapを使う場合:

MAIL_MAILER=smtp
MAIL_HOST=sandbox.smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=xxxxxxx
MAIL_PASSWORD=xxxxxxx
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=example@example.com
MAIL_FROM_NAME="Example App"

※Mailtrapは初心者におすすめの開発用ダミーメールサービスです。


③ルーティングの確認

Breezeのルーティングは最初からメール認証に対応しています。
以下が設定済みです。

routes/web.php 内で:

Auth::routes(['verify' => true]);

※Breezeでは内部で routes/auth.php に分けられている場合もあります。


④ミドルウェアの確認

メール認証が必要なページには verified ミドルウェアを設定します。

例:

Route::get('/dashboard', function () {
    return view('dashboard');
})->middleware(['auth', 'verified']);

これで、未認証のユーザーは認証前に確認画面へリダイレクトされます。


⑤実際に動作確認する

  1. ユーザー登録
  2. 登録したメールアドレスに認証リンクが送信される
  3. リンクをクリックして認証完了
  4. 認証済みユーザーだけが /dashboard へアクセス可能

補足:メールテンプレートをカスタマイズする

Laravelのメール認証は VerifyEmail 通知を使用しています。

カスタマイズしたい場合は通知をオーバーライドします。

php artisan make:notification VerifyEmailCustom

あとは通知をUserモデルで使うように変更できます。


まとめ

  • Breezeはメール認証も標準サポート
  • MustVerifyEmail を実装するだけで基本OK
  • 開発環境ではMailtrap利用が便利

認証はアプリの信頼性を高める大事な機能です。ぜひ実装してみましょう!


では、また次の記事で〜

投稿者 パンに塗り塗りジャム太郎

コンニチハ! Z世代のパンに塗り塗りジャム太郎です。 Web系自社開発企業でポンコツエンジニアをしております。 このブログでは最低1人にでもタメになってくれたらいいなぁ〜ぐらいの内容を発信しています。 お手柔らかによろしくお願いいたします。