#15 Laravel基礎

Laravel Breezeで認証を導入する

認証機能を自前で作るのは大変

ログイン・新規登録・パスワードリセット・メール認証などの認証機能を1から作ると、セキュリティ上の考慮事項が多く時間がかかります。Laravelには認証機能を即座に導入できる公式パッケージが用意されています。


Laravel Breezeとは

Laravel Breezeは、Laravelの認証機能(ログイン・登録・パスワードリセット・メール認証・プロフィール編集)をシンプルなBladeテンプレートで提供するスターターキットです。

コードはすべて自分のプロジェクトにコピーされるので、カスタマイズが自由です。


インストール手順

① Breezeをインストール

# Breezeパッケージをインストール
composer require laravel/breeze --dev

② スキャフォールドを生成

# Blade テンプレート版でインストール
php artisan breeze:install blade

このコマンドで以下が自動で作られます:

  • resources/views/auth/ ← ログイン・登録などのビュー
  • app/Http/Controllers/Auth/ ← 認証コントローラー
  • routes/auth.php ← 認証ルート
  • resources/views/dashboard.blade.php ← ログイン後のホーム画面

③ NPMと依存関係を準備

npm install && npm run dev

④ マイグレーションを実行

php artisan migrate

これでユーザーテーブルが作られます。


生成されるルート一覧

php artisan route:list を実行すると認証ルートが確認できます。

URL機能
GET /register新規登録フォーム
POST /register新規登録処理
GET /loginログインフォーム
POST /loginログイン処理
POST /logoutログアウト
GET /forgot-passwordパスワードリセット申請
POST /forgot-passwordリセットメール送信
GET /reset-password/{token}新しいパスワード入力
GET /profileプロフィール編集
GET /dashboardログイン後ホーム

認証状態の確認

// ログイン済みかどうか
auth()->check()  // true / false

// ログインユーザーを取得
auth()->user()   // User モデル または null
$user = Auth::user(); // ファサードを使う書き方

// ビューの中でも使える
@auth
    <p>ようこそ、{{ auth()->user()->name }}さん</p>
@endauth

@guest
    <a href="/login">ログイン</a>
@endguest

ルートをログイン必須にする

// 📁 routes/web.php

// auth ミドルウェアで保護
Route::middleware('auth')->group(function () {
    Route::resource('posts', PostController::class);
});

未ログインでアクセスしようとすると自動で /login にリダイレクトされます。


ログイン後のリダイレクト先を変える

デフォルトでは /dashboard にリダイレクトされます。変更するには:

// 📁 app/Http/Controllers/Auth/AuthenticatedSessionController.php

// store() メソッドの return 部分を変更
return redirect()->intended(route('posts.index'));

または RouteServiceProvider の定数で設定:

// 📁 app/Providers/RouteServiceProvider.php

public const HOME = '/posts'; // ← ここを変更

まとめ

  • composer require laravel/breeze --devphp artisan breeze:install blade の2ステップで認証が完成
  • すべてのコードが自プロジェクトにコピーされるので自由にカスタマイズできる
  • auth() ヘルパーで認証状態を確認できる
  • Route::middleware('auth') でルートをログイン必須にできる

次回はゲートとポリシーを使った認可を学びます。