Laravel gewinnt durch Parametrisierung erhebliche Flexibilität und ermöglicht dynamisches Verhalten basierend auf Laufzeitdaten. Dies ist besonders wertvoll für Szenarien wie eine rollenbasierte Zugriffskontrolle, die Ratenbegrenzung oder jede Situation, die eine konfigurierbare Middleware-Logik verlangt.
Hier ist ein Beispiel, das einen rollenbasierten Routenschutz unter Verwendung parametrisierter Middleware zeigt:
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); } }
Diese Middleware überprüft, ob der authentifizierte Benutzer eine der angegebenen Rollen besitzt. Mal sehen, wie es in Routendefinition verwendet wird:
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'); });
Die an die Middleware übergebenen :editor
und :admin
-Parameter bestimmen die erforderlichen Rollen dynamisch. Dieser Ansatz behält saubere Routen und Controller bei gleichzeitiger Implementierung einer ausgefeilten Autorisierung. Die Leistung parametrisierter Middleware liegt in seiner Fähigkeit, kontextspezifische Daten in die Middleware-Logik zu injizieren, was zu anpassungsfähigeren und wartbaren Code führt.
Das obige ist der detaillierte Inhalt vonParametrisierte Middleware in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!