Laravelフレームワークでは、ミドルウェアはHTTP要求の処理プロセスの重要な部分であり、認証、許可チェック、ロギング、リクエストの変更などの機能によく使用されます。リクエストを傍受および処理する柔軟でエレガントな方法を提供し、アプリケーションのロジックをより明確にし、より構造化します。
Laravelのミドルウェアは、 App/HTTP/Middlewareディレクトリにあり、職人コマンドまたは手動で作成できます。ミドルウェアは、基本的にリクエストを受信して応答を返すクラスです。コア関数はハンドル()であり、リクエストオブジェクトと閉鎖を受け入れます。ロジックを処理した後、リクエストが渡されるか、応答に直接返されます。
HTTP要求がアプリケーションに到達すると、システムはミドルウェアの登録命令に従って各ミドルウェアを順番に実行します。ミドルウェアが応答を返す場合、後続の処理プロセスが中止され、結果がクライアントに直接返されます。
ミドルウェアの登録は、グローバル登録とルーティング登録の2つの方法に分けられます。グローバルミドルウェアはすべてのリクエストに基づいて動作し、アプリ/http/kernel.phpファイルの$ Middlewareプロパティで定義されています。
protected $middleware = [
\App\Http\Middleware\CheckToken::class,
];
ミドルウェアに特定のルートで動作する場合のみ、 $ routeMiddlewareを使用して登録できます。
protected $routeMiddleware = [
'checkRole' => \App\Http\Middleware\CheckRole::class,
];
次に、ルートのミドルウェアメソッドを参照してください。
Route::get('/admin', function () {
// バックエンドページ
})->middleware('checkRole');
ミドルウェアが実行される順序は、登録命令によって異なります。グローバルミドルウェアは配列の順に実行されますが、ルーティングミドルウェアはルート定義の配置順に実行されます。コマンドPHP Artisan Route:リストを使用して、ミドルウェアの使用を表示できます。
複数のルートが同じミドルウェアコレクションを共有すると、グループ化によって管理を簡素化できます。例えば:
Route::group(['middleware' => 'admin'], function () {
// すべてのバックグラウンドルート
});
この時点で、グループ内のすべてのルートは、管理ミドルウェアを自動的にロードします。
以下は、ミドルウェアの特定のアプリケーションを示す認証例です。
1.ミドルウェアの作成:
php artisan make:middleware Authenticate
2。ミドルウェアのロジックを書き込む:
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class Authenticate
{
public function handle(Request $request, Closure $next)
{
$token = $request->header('Authorization');
if ($token != 'secret_token') {
return response()->json(['error' => 'Unauthorized'], 401);
}
return $next($request);
}
}
3.ミドルウェアを登録:
protected $middleware = [
\App\Http\Middleware\Authenticate::class,
];
4。ルーティングに適用されます:
Route::get('/api', function () {
// 保護されたインターフェイス
})->middleware('auth');
このミドルウェアは、リクエストヘッダーの承認フィールドを確認します。プリセットトークンが一致しない場合、401エラーを直接返します。それ以外の場合、リクエストは引き続き処理されます。
Laravel Middlewareは、開発者にHTTP要求を傍受および処理する強力で柔軟な方法を提供します。ミドルウェアを合理的に使用することにより、コントローラーロジックを簡素化でき、システムのセキュリティと保守性を改善できます。ミドルウェアの原則とアプリケーションスキルをマスターすることで、より堅牢なWebアプリケーションの構築に役立ちます。