ミドルウェアは、アプリケーションに入ってくるHTTPリクエストをフィルタリングおよび処理するメカニズムを提供します。リクエストがコントローラーに到達する前(および任意で後に)コードを実行します。認証、ログ、CORS、レート制限などの横断的関心事に使用されます。
ミドルウェアの動作方法
{
{
(->age < ) {
();
}
();
}
}
ミドルウェアはリクエストと$nextクロージャーを受け取ります。$next($request)の前のコードは入るときに実行されます。$nextを呼び出すと制御を前に進めます。その後、レスポンスに対して動作することもできます。ミドルウェアは短絡することができます($nextを呼ばずにレスポンスを返す、例えば未認可リクエストをブロックするなど)。
// to a route
Route::get('/admin', ...)->middleware('auth');
// to a group of routes
Route::middleware(['auth', 'verified'])->group(function () { ... });
// globally (every request) — registered in the HTTP kernel / bootstrap
ミドルウェアはルートごと、グループごと、またはグローバルに適用されます。複数のミドルウェアはシーケンシャルに実行されます(パイプライン)。
auth → require authentication (redirect/401 if not logged in)
verified → require a verified email
throttle:60,1 → rate limiting (60 requests per minute)
guest → only for non-authenticated users
can:update,post → authorization check
+ CSRF protection, CORS, etc. run as middleware automatically
Laravelは最も一般的なニーズのためのミドルウェアが付属しています — auth(ルートを保護するための主力)、レート制限、CSRF、その他。
ミドルウェアは横断的関心事をクリーンに処理するための重要なLaravelの概念です — 認証、認可、ログ、レート制限、CORSなど、多くのリクエストで実行されるべきロジック。
それを理解することは不可欠です。なぜなら、Laravelアプリケーションがリクエストをフィルタリングおよび保護する方法だからです。組み込みの**authミドルウェア**はルートを保護する(ログインが必要)標準的な方法です。throttleはレート制限を提供し、CSRF保護は自動的にミドルウェアとして実行されます — したがって、ミドルウェアはコアなアプリケーション・セキュリティと動作を支えています。
ミドルウェアがどのように動作するか(リクエスト/$nextパイプライン、リクエストをブロックするためのレスポンス返却による短絡能力)、およびそれをどのように適用するか(ルートごと、グループごと、グローバルに)を知ることは、アプリケーションを正しく構成するために基本的です — 横断的ロジックをすべてのコントローラーで繰り返すのではなく、ミドルウェアに置く。
ミドルウェアは、多くのルートに適用されるリクエストレベルの関心事をLaravelが処理する場所であり、セキュアで適切に構造化されたアプリケーションを構築するための重要で頻繁に使用される知識になります — 特に、ほぼすべての実在するアプリケーションが使用するルートを保護するためのauthミドルウェア。
ミドルウェア・パイプラインを理解することはまた、アプリケーション固有のリクエスト処理のためのカスタムミドルウェアを書くのに役立ちます。