「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Laravel でミドルウェアをマスターする: 詳細ガイド

Laravel でミドルウェアをマスターする: 詳細ガイド

2024 年 7 月 31 日に公開
ブラウズ:524

Mastering Middleware in Laravel: An In-Depth Guide

Web 開発の迷宮を進む中で、常に私の道を照らしてくれた機能が 1 つありました。それは、Laravel のミドルウェア システムです。ミドルウェアはリクエストをフィルタリングするだけではありません。アプリケーションを変革し、セキュリティ、パフォーマンス、シームレスなユーザー エクスペリエンスを保証します。認証、ロギング、または横断的な問題に取り組んでいる場合でも、ミドルウェアはそれをエレガントに管理するのに役立ちます。

ミドルウェアについて

ミドルウェアは、リクエストレスポンスの間のブリッジとして機能し、Web アプリケーションのリクエストとレスポンスのライフサイクルにおいて極めて重要な役割を果たします。まず、リクエストとレスポンスとは何なのかを詳しく見てみましょう。リクエストはクライアント (通常はユーザーのブラウザ) からサーバーに対して行われ、Web ページ、データ、その他のサービスなどの特定のリソースを要求します。

このリクエストには、HTTP メソッド (GET、POST など)、ヘッダー、および場合によってはデータを含む本文などの重要な情報が含まれます。サーバーはこのリクエストを受信すると、必要な情報を処理して応答を生成します。

応答は、クライアントの要求に対するサーバーの応答です。これには、リクエストのステータス (成功、失敗など)、ヘッダー、およびクライアントが Web ページのレンダリングやさらなるアクションの実行に使用する HTML、JSON、またはその他のデータ形式を含む本文が含まれます。

ミドルウェアは、これらのリクエストと応答を検査、変更、さらには停止できる仲介者として機能します。これは、リクエストがコア アプリケーション ロジックに到達する前、および応答がクライアントに送り返される前に動作します。

ミドルウェアが必要なのは、モジュール式で再利用可能なコードが、メインのアプリケーション ロジックを混乱させることなく、認証、ロギング、データ操作などの横断的な問題を処理できるようにするためです。たとえば、ミドルウェアは、認証されたユーザーのみが特定のルートにアクセスできるようにしたり、デバッグ目的で各リクエストをログに記録したり、コントローラーに到達する前にリクエスト データを変換したりすることができます。

ミドルウェアの作成

Laravel でのミドルウェアの作成は簡単です。 Artisan コマンド.
を使用して、新しいミドルウェアを生成できます。

php artisan make:middleware CheckAge

このコマンドは、app/Http/Middleware ディレクトリに新しい CheckAge ミドルウェア ファイルを作成します。このファイル内で、各リクエストに対して実行するロジックを定義できます。

age 



この例では、ミドルウェアはリクエスト内の age 属性をチェックします。年齢が 200 以下の場合、ユーザーは home ルートにリダイレクトされます。それ以外の場合は、リクエストの続行が許可されます。

ミドルウェアの登録

ミドルウェアを作成したら、それをカーネルに登録する必要があります。カーネルは、HTTP リクエストのライフサイクル全体を管理する Laravel アプリケーションの中核です。これは、リクエストがアプリケーションのルートやコントローラーに到達する前に、さまざまなミドルウェア層を介してリクエストのフローを調整する中央ハブとして機能します。

app/Http/Kernel.php ファイル内にミドルウェアを登録するには 2 つの方法があります:

  1. グローバル ミドルウェア: これらのミドルウェアは、
    へのすべてのリクエスト中に実行されます。 あなたの申請。

  2. ルート ミドルウェア: これらのミドルウェアは特定の
    に割り当てることができます ルート。

CheckAge ミドルウェアをルート ミドルウェアとして登録するには、カーネルの $routeMiddleware 配列に追加します。

protected $routeMiddleware = [
    // Other middleware
    'checkAge' => \App\Http\Middleware\CheckAge::class,
];

これで、このミドルウェアをルートまたはルート グループに適用できます:

Route::get('admin', function () {
    // Only accessible if age > 200
})->middleware('checkAge');

高度なミドルウェア技術

Laravelのミドルウェアは単純なチェックだけに限定されません。ミドルウェアを最大限に活用するための高度なテクニックをいくつか紹介します:

  1. パラメータ化ミドルウェア

ミドルウェアは追加のパラメーターを受け入れることができます。これは、ミドルウェアの動作がパラメータに基づいて変化する可能性があるシナリオに役立ちます。

public function handle($request, Closure $next, $role)
{
    if (! $request->user()->hasRole($role)) {
        // Redirect or abort
    }

    return $next($request);
}
  1. グループ化ミドルウェア

複数のミドルウェアを 1 つのキーにグループ化できるため、一連のミドルウェアを多くのルートに適用できます。

protected $middlewareGroups = [
    'web' => [
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        // more middleware
    ],
];

ミドルウェア グループをルートに適用しています:

Route::middleware(['web'])->group(function () {
    Route::get('/', function () {
        // Uses 'web' middleware group
    });

    Route::get('dashboard', function () {
        // Uses 'web' middleware group
    });
});
  1. ミドルウェアを終了しています

ミドルウェアは、応答がブラウザに送信された後に呼び出される terminate メソッドを定義できます。これは、ロギングや分析などのタスクに特に役立ちます。

public function terminate($request, $response)
{
    // Log request and response
}

結論

ミドルウェアをマスターすることで、安全でパフォーマンスが高いだけでなく、保守性と拡張性も備えたアプリケーションを作成できます。認証、ロギング、またはカスタム パラメーターを使用したアプリケーションの動作の微調整を処理する場合でも、ミドルウェアはクリーンでエレガントなソリューションを提供します。

Laravel プロジェクトでミドルウェアの力を活用し、横断的な問題の管理方法がミドルウェアによってどのように変化するかを確認してください。コーディングを楽しんでください!

リリースステートメント この記事は次の場所に転載されています: https://dev.to/cyrilmuchemi/mastering-middleware-in-laravel-an-in- Depth-guide-4bde?1 侵害がある場合は、[email protected] に連絡して削除してください。それ
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3