Heim >Backend-Entwicklung >PHP-Tutorial >Parametrisierte Middleware in Laravel

Parametrisierte Middleware in Laravel

百草
百草Original
2025-03-06 02:19:08373Durchsuche

Parameterized Middleware in Laravel

Das Middleware -System von

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn