Rumah >pembangunan bahagian belakang >tutorial php >Middleware parameter di laravel
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); } }Pemeriksaan middleware ini jika pengguna yang disahkan mempunyai mana -mana peranan yang ditentukan. Mari lihat bagaimana ia digunakan dalam definisi laluan:
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'); });parameter
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!