カスタムミドルウェアの実装:
Laravelのミドルウェアは、アプリケーションを入力するHTTP要求をフィルタリングするための強力なメカニズムを提供します。カスタムミドルウェアを作成すると、リクエストライフサイクルに独自のロジックを注入できます。これが段階的なガイドです:
php artisan make:middleware CheckAge
。これによりapp/Http/Middleware/CheckAge.php
に新しいミドルウェアファイルが作成されます。handle
方法内で、カスタムロジックを配置します。この方法は、リクエスト( $request
)と閉鎖( $next
)を受信します。閉鎖は、次のミドルウェアまたはルートハンドラーを表します。例:<code class="php"><?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; class CheckAge { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse */ public function handle(Request $request, Closure $next) { if ($request->age </code>
app/Http/Kernel.php
に新しく作成されたミドルウェアを登録する必要があります。 $routeMiddleware
配列に追加します。<code class="php">protected $routeMiddleware = [ // ... other middleware ... 'checkage' => \App\Http\Middleware\CheckAge::class, ];</code>
routes/web.php
またはroutes/api.php
ファイルの特定のルートまたはルートのグループに割り当てます。<code class="php">Route::get('/profile', [ProfileController::class, 'show'])->middleware('checkage');</code>
カスタムフィルターの実装(注:Laravelの用語は、一般に「フィルター」の代わりに「ミドルウェア」を使用します):
Laravelは、いくつかの古いフレームワークと同じ方法で「フィルター」という用語を明示的に使用していませんが、ミドルウェアは効果的に同じ目的を果たします。上記のコード例は、年齢をチェックし、状態が満たされていないかどうかをリダイレクトすることにより、フィルターのような動作を示しています。ミドルウェア内のhandle
メソッドは、フィルター関数として機能します。
handle
メソッド内で作成するのではなく、ミドルウェアコンストラクターに依存関係を注入します。これにより、テスト可能性と保守性が向上します。 Laravelは、認証( auth
)および承認( auth.basic
、 can
など)のための組み込みのミドルウェアを提供します。これらを直接使用するか、カスタムミドルウェアを作成して、認証/認証ロジックを拡張またはカスタマイズできます。
組み込みのミドルウェアを使用した例:
<code class="php">Route::get('/profile', [ProfileController::class, 'show'])->middleware('auth'); //Requires authentication Route::get('/admin', [AdminController::class, 'index'])->middleware('auth', 'admin'); //Requires authentication and admin role (assuming you have an 'admin' middleware defined)</code>
カスタム認証ミドルウェアの例:
<code class="php"><?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; class CheckAdmin { public function handle(Request $request, Closure $next) { if (Auth::check() && Auth::user()->isAdmin()) { return $next($request); } abort(403, 'Unauthorized'); // Return 403 Forbidden if not an admin } }</code>
このCheckAdmin
ミドルウェアをapp/Http/Kernel.php
ファイルに登録することを忘れないでください。
try...catch
ブロックを使用して、エラーを優雅に管理します。app/Http/Kernel.php
の$routeMiddleware
配列にカスタムミドルウェアを正しく登録することを確認してください。よくある間違いは、このステップを忘れて、ミドルウェアを効果的ではないことです。以上がLaravelアプリケーションにカスタムミドルウェアとフィルターを実装する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。