Skip to main content

ミドルウェアとは

ミドルウェアは、アプリケーションに届くHTTPリクエストを検査・フィルタリングする仕組みです。 リクエストがコントローラーに渡される前後に処理を挟み込めます。 例えば、Laravelには認証ミドルウェアが含まれています。 ユーザーが認証されていない場合はログイン画面にリダイレクトし、認証済みの場合はリクエストをそのままアプリケーション内部に通します。 認証以外にも、ログ記録・CSRFプロテクション・レート制限など、さまざまな目的でミドルウェアを作成できます。Laravel 13のCSRF保護の詳細は CSRFプロテクション を参照してください。
ユーザーが定義したミドルウェアは、通常 app/Http/Middleware ディレクトリに置きます。

組み込みミドルウェア

Laravelはデフォルトで webapi の2つのミドルウェアグループを用意しています。 routes/web.php には web グループが、routes/api.php には api グループが自動的に適用されます。 また、よく使うミドルウェアにはエイリアスが設定されており、短い名前で参照できます。

ミドルウェアの作成

make:middleware Artisanコマンドで新しいミドルウェアを作成します。
app/Http/Middleware/EnsureTokenIsValid.php が生成されます。 handle メソッドにリクエストを処理するロジックを記述します。
$next($request) を呼び出すと、リクエストがアプリケーションの次の処理に渡されます。 条件を満たさない場合はリダイレクトやレスポンスを返してリクエストを止めます。

リクエスト前後の処理

ミドルウェアはリクエストのまたはに処理を実行できます。

ミドルウェアの登録

グローバルミドルウェア

すべてのリクエストに対してミドルウェアを実行したい場合は、bootstrap/app.phpwithMiddleware でグローバルスタックに追加します。
append はスタックの末尾に追加します。先頭に追加するには prepend を使います。

ルートへのミドルウェア適用

特定のルートだけにミドルウェアを適用するには、ルート定義で middleware メソッドを呼び出します。
複数のミドルウェアを適用する場合は配列で渡します。
特定のルートだけミドルウェアを除外したい場合は withoutMiddleware を使います。

ミドルウェアエイリアス

長いクラス名に短いエイリアスを定義できます。bootstrap/app.php で設定します。
エイリアスを使ってルートに適用できます。

ミドルウェアグループ

複数のミドルウェアを1つのキーでまとめると、ルートへの適用が簡単になります。 bootstrap/app.phpappendToGroup または prependToGroup を使います。
グループはルートに通常のミドルウェアと同じ方法で適用できます。
既存の web グループや api グループにミドルウェアを追加する場合は専用のメソッドが使えます。

ミドルウェアパラメーター

ミドルウェアは追加のパラメーターを受け取れます。 handle メソッドの $next 引数の後にパラメーターを追加します。
ルート定義でミドルウェア名とパラメーターを : で区切って指定します。
複数のパラメーターはカンマで区切ります。

実例:認証チェックミドルウェア

ログインしていないユーザーをリダイレクトするシンプルな例です。
ルートに適用します。
Laravelには認証用の auth ミドルウェアが組み込まれています。独自に実装する前に、既存のミドルウェアで要件を満たせないか確認しましょう。

次のステップ

HTTPリクエスト

コントローラーでリクエストデータを受け取る方法を学びます。
最終更新日 2026年5月26日