Berikut adalah contoh yang menunjukkan perlindungan laluan berasaskan peranan menggunakan middleware parameterized:
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'); });
dan :editor
diluluskan ke middleware secara dinamik menentukan peranan yang diperlukan. Pendekatan ini mengekalkan laluan dan pengawal yang bersih sambil melaksanakan kebenaran yang canggih. Kuasa middleware parameterized terletak pada keupayaannya untuk menyuntik data khusus konteks ke dalam logik middleware, menghasilkan kod yang lebih mudah disesuaikan dan diselenggarakan. :admin
Atas ialah kandungan terperinci Middleware parameter di laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!