
コンニチハ
パンに塗り塗りジャム太郎です!
今回のテーマは「Laravelで簡単ログイン機能を作る方法」についてです。
はじめに
Laravelでユーザー登録機能を作ると「登録した人が本当に正しいメールアドレスを使っているか?」を確認したくなります。
これを実現するのがメール認証(Email Verification)です。
実はLaravel Breezeでも、簡単にメール認証機能を有効化できます!
今回はその手順をわかりやすく解説します。
前提
- Laravel 10 以降
- 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']);
これで、未認証のユーザーは認証前に確認画面へリダイレクトされます。
⑤実際に動作確認する
- ユーザー登録
- 登録したメールアドレスに認証リンクが送信される
- リンクをクリックして認証完了
- 認証済みユーザーだけが
/dashboard
へアクセス可能
補足:メールテンプレートをカスタマイズする
Laravelのメール認証は VerifyEmail
通知を使用しています。
カスタマイズしたい場合は通知をオーバーライドします。
php artisan make:notification VerifyEmailCustom
あとは通知をUserモデルで使うように変更できます。
まとめ
- Breezeはメール認証も標準サポート
MustVerifyEmail
を実装するだけで基本OK- 開発環境ではMailtrap利用が便利
認証はアプリの信頼性を高める大事な機能です。ぜひ実装してみましょう!
では、また次の記事で〜