ホームページ > バックエンド開発 > PHPチュートリアル > Laravelのパラメーター化されたミドルウェア

Laravelのパラメーター化されたミドルウェア

百草
リリース: 2025-03-06 02:19:08
オリジナル
372 人が閲覧しました

Parameterized Middleware in Laravel

Laravelのミドルウェアシステムは、パラメーター化を通じて大きな柔軟性を獲得し、ランタイムデータに基づいて動的な動作を可能にします。これは、ロールベースのアクセス制御、レートの制限、または構成可能なミドルウェアロジックを要求する状況などのシナリオにとって特に価値があります。

パラメーター化されたミドルウェアを使用したロールベースのルート保護を示す例を次に示します。

このミドルウェアは、認証されたユーザーが指定された役割のいずれかを所有しているかどうかをチェックします。 ルート定義でどのように使用されているかを見てみましょう:
namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class EnsureUserHasRole
{
    public function handle(Request $request, Closure $next, string ...$roles)
    {
        if (!$request->user()?->hasAnyRole($roles)) {
            return response()->json(['error' => 'Insufficient permissions'], 403);
        }
        return $next($request);
    }
}
ログイン後にコピー

ミドルウェアに渡された
use App\Http\Controllers\PostController;
use App\Http\Middleware\EnsureUserHasRole;

Route::prefix('posts')->group(function () {
    // Public routes
    Route::get('/', [PostController::class, 'index']);

    // Editor routes
    Route::put('/{id}', [PostController::class, 'update'])
        ->middleware(EnsureUserHasRole::class . ':editor');

    Route::post('/', [PostController::class, 'store'])
        ->middleware(EnsureUserHasRole::class . ':editor');

    // Admin routes
    Route::delete('/{id}', [PostController::class, 'destroy'])
        ->middleware(EnsureUserHasRole::class . ':admin');
});
ログイン後にコピー
および

パラメーターは、必要な役割を動的に決定します。 このアプローチは、洗練された許可を実装しながら、クリーンなルートとコントローラーを維持します。 パラメーター化されたミドルウェアの力は、ミドルウェアのロジックにコンテキスト固有のデータを注入する能力にあり、より適応性のある保守可能なコードをもたらします。

以上がLaravelのパラメーター化されたミドルウェアの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート