【図解あり】Laravel ミドルウェアとは?使い方・種類・順番をわかりやすく解説!

未経験エンジニアの日常
悩んでいる人の画像です。
  • Laravelのミドルウェアって何?
  • ミドルウェアの使い方がわからない
  • 現場ではどう使われているのか知りたい

このようなお悩みを解決するために、Laravelのライフサイクルについて簡単に解説していきます。

この記事を書いた人

  • もうすぐエンジニア3年目
  • Laravel, Vue.jsを主に使用
  • AWS SAA CLF取得済み

まずはこの一冊!一番わかりやすいLaravelの書籍

楽天Kobo電子書籍ストア
¥3,000 (2025/03/04 10:59時点 | 楽天市場調べ)

【図解で理解】Laravel ミドルウェアとは?具体例つきで解説

リクエストとレスポンスの間で特定の処理を実行する仕組みをミドルウェアと言います。

📌 ミドルウェアの具体例①(リクエスト → コントローラー)

Twitterで ログインせずにDMを開こうとすると、ログイン画面にリダイレクト されますよね?

裏側では…

  • ユーザーがDM画面を開こうとする(リクエスト)
  • コントローラーが「DM画面を表示しよう」とする
  • しかし ミドルウェアが「ログインしていないからダメ!」と判断し、ログイン画面へリダイレクト

このように、リクエストとコントローラーの間でアクセス制限をかけるのがミドルウェアの役割(図の①)の一つです。


📌 ミドルウェアの具体例②(コントローラー → レスポンス)

例えば、ウェブページの読み込みを速くするために、HTMLの不要なスペースや改行を削除するミドルウェアがあります。

裏側では…

  • ユーザーがページにアクセス(リクエスト)
  • コントローラーが「ページのデータを取得して表示しよう」とする
  • ミドルウェアが「ちょっと待って!HTMLを圧縮して最適化するよ」と処理を実行し、軽量化されたレスポンスを返す

このように、レスポンスの最終処理をするのもミドルウェアの役割(図の④)です!

ミドルウェアの種類によって実行タイミングが違うけど、まずはこの理解でOK!

スポンサーリンク

【種類別に解説】Laravel ミドルウェアの使い方・登録方法

ミドルウェアは以下の3種類あります。
グローバルミドルウェア
ルートミドルウェア
カスタムミドルウェア

ミドルウェアの各種類の違いは主に適用範囲と登録場所がポイントになります。

各種類のミドルウェアをポイントを押さえながら見ていきましょう

グローバルミドルウェア

グローバルミドルウェアは、全てのリクエストに対して適用されます。

実行タイミングは、

リクエストがアプリケーションに届いた時点で実行される(ルート処理の前)。

レスポンスをクライアントに返す前にも実行される(ルート処理の後)。

の二つになります。

app/Http/Kernel.php$middleware配列に登録することで、アプリ全体で機能します。

Laravel以下のようなミドルウェアがデフォルトで登録されています。

1. メンテナンスモードのチェック(PreventRequestsDuringMaintenanceクラス)
アプリがメンテナンスモードのとき、すべてのリクエストをブロックする

2. リクエストサイズの制限(ValidatePostSizeクラス)
フォーム送信時、データサイズが設定値(post_max_size)を超えている場合にリクエストを拒否する

3. 余分なスペースの削除(TrimStringsクラス)
すべてのリクエストデータの前後の空白を自動で削除する。
例えば、ユーザーが " Taro Yamada " と入力しても、 "Taro Yamada" に自動で修正されます。

4. 空文字を null に変換(ConvertEmptyStringsToNullクラス)
フォームの入力が空文字 "" だった場合、自動的に null に変換してデータベースに保存する。

ルートミドルウェア

ルートミドルウェアは、指定した特定のルートにのみ適用されます。

実行タイミングは、

ルートが決定した後、コントローラーの処理が実行される前です。

app/Http/Kernel.php$routeMiddleware配列に登録することで、アプリ全体で機能します。

Laravelには以下のようなミドルウェアがデフォルトで登録されています。

1. 認証チェック(authミドルウェア・Authenticateクラス)
authミドルウェアは、ユーザーがログインしているかを確認 し、未ログインならログインページへリダイレクトする
これを適用することで、ログインが必要なページにアクセスするための制限を設けることができる

2. 認証ガードの指定(auth:guardミドルウェアAuthenticateクラス)
auth:guard ミドルウェアを使うと、特定の認証ガード(ユーザーの種類)を指定可能
例えば、auth:admin を指定すると、管理者として認証されている場合のみ アクセスが可能になる

3. ゲストユーザー制限(guestミドルウェア・RedirectIfAuthenticatedクラス)
guest ミドルウェアは、ログイン済みのユーザーがアクセスできないようにする もの
ログインページに適用すると、ログイン済みのユーザーはダッシュボードにリダイレクトする

4. CSRF(クロスサイトリクエストフォージェリ)対策(verifyCsrfTokenクラス)
verifyCsrfToken ミドルウェアは、フォーム送信時に CSRFトークンの一致を確認し、不正なリクエストを防ぐ
POSTPUT リクエストに対して、セキュリティを強化するために重要になる

カスタムミドルウェア

カスタムミドルウェアはユーザーが独自で作るミドルウェアです。

ミドルウェアを作成しただけだとグローバルミドルウェアにもルートミドルウェアにも属していないため、用途に応じて$middleware配列か$routeMiddleware配列に登録する必要があります。

カスタムミドルウェアの具体例

1. 認証チェック(例:管理者専用ページ)

特定のユーザー(例:管理者)のみアクセスできるようにする。

2. メンテナンスモードの独自カスタマイズ

Laravelの標準メンテナンス機能とは別に、特定のIPアドレスからのみアクセスを許可する。

3. アクセスログの記録

ユーザーがどのページを訪れたか、データベースやログファイルに記録する。

4. 言語設定の自動適用

ユーザーのブラウザの言語設定に基づいて、アプリの表示言語を自動で切り替える。

スポンサーリンク

【初心者向け】Laravel ミドルウェアの設定・適用手順

1. ミドルウェアの作成方法(artisanコマンド)

ターミナルで以下のコマンドを実行して、ミドルウェアを作成します。

php artisan make:middleware 〇〇Middleware

すると、app/Http/Middleware〇〇Middleware.php が作成されます。

2. ミドルウェアの編集と処理のカスタマイズ

作成した app/Http/Middleware/〇〇Middleware.phpを開き、handleメソッド内に処理を記述します。
以下は、ログインしていない場合にログインページへリダイレクトする処理です。

public function handle($request, Closure $next)
{
if (!auth()->check()) {
return redirect('/login');
}

return $next($request);
}

$next($request) は、次の処理(コントローラーなど)へリクエストを渡す役割をします。

3. ミドルウェアの登録(Kernel.phpの設定)

作成したミドルウェアを どのリクエストに適用するか指定します。

グローバルミドルウェア(すべてのリクエストに適用)app/Http/Kernel.php$middleware配列に追加

ルートミドルウェア(特定のルートに適用)→同ファイルの$routeMiddlewareに登録

protected $routeMiddleware = [ 'sample' => \App\Http\Middleware\SampleMiddleware::class, ];

そして、特定のルートで適用させる

Route::get('/dashboard', [DashboardController::class, 'index'])
    ->middleware('sample');

4. ミドルウェアの適用確認方法(デバッグ・テスト)

ブラウザで/dashboard にアクセスし、ミドルウェアの動作を確認します。

スポンサーリンク

【Laravelを最短でマスター!】初中級者が確実に成長するおすすめ書籍3選

これを読めばLaravelで開発ができる!わかりやすく、実践的な学習書を厳選して紹介します!

Laravelの教科書 バージョン10対応

初めてLaravelに触れる、フレームワークに触れるという方は絶対にこの一冊!と言っても過言ではないほど初学者に寄り添った書籍になります。

MVCモデル?フレームワーク?という状態だった筆者がこれらの基本知識を理解し、アプリ開発できたのもこの書籍のおかげです。

難しいこと言葉には必ずわかりやすい説明がついていてこの書籍で学べば必ずLaravelの使い方を理解して何か開発することができるはず!

技術書って難しいしなあ、Laravelってどう使うんだろうという悩みや疑問を持っている方必読の一冊です。

楽天Kobo電子書籍ストア
¥3,000 (2025/03/04 10:59時点 | 楽天市場調べ)

Laravelリファレンス Web職人好みの新世代PHPフレームワーク

Laravelの深い理解を目指す開発者にとって必読の一冊です。

シンプルなコード例から実践的なテクニックまで幅広くカバーしているので、初心者はもちろん、中級者の方にも新たな発見がある内容になっています。

実務でLaravelを使いこなすためのベストプラクティスや、最新のフレームワーク動向を網羅しているため、初心者、中級者からさらにステップアップしたい方おすすめの一冊です。

PHPフレームワークLaravel Webアプリケーション開発 バージョン8.x対応

Laravelの基礎から実践的な開発手法までをわかりやすく解説した一冊です。

サンプルコードが豊富で、初心者の方でもスムーズに学習できるのが魅力だと思います。

実務で使える知識も多く、Laravelをしっかり習得したい方におすすめです。

今回のライフサイクルについても図解つきで説明してくれています。

楽天Kobo電子書籍ストア
¥3,799 (2025/02/18 18:21時点 | 楽天市場調べ)

【まとめ】Laravel ミドルウェアを理解して適切に活用しよう

Laravelのミドルウェアは、リクエストとレスポンスの間で重要な処理を行う強力な機能です。

グローバル、ルート、カスタムの各ミドルウェアを適切に活用することで、セキュリティや認証などを効率的に管理できます。

ミドルウェアの登録や適用順番を理解し、アプリケーションの品質向上に役立てましょう。

最後まで読んでくださって本当にありがとうございました!

今後ともよろしくお願いします。

おすすめのLaravel記事

おすすめの技術系記事

SNSはこちらから
twitter https://moile.twitter.com/QTzmttr1FeEYck
主に勉強記録を更新しています。

note https://note.com/arichan0/

参考記事書籍

11.x ミドルウェア Laravel

Laravelの教科書 バージョン10対応

Laravelリファレンス Web職人好みの新世代PHPフレームワーク

PHPフレームワークLaravel Webアプリケーション開発 バージョン8.x対応

コメント

タイトルとURLをコピーしました