Maison > développement back-end > tutoriel php > Middleware paramétré à Laravel

Middleware paramétré à Laravel

百草
Libérer: 2025-03-06 02:19:08
original
372 Les gens l'ont consulté

Parameterized Middleware in Laravel

Le système middleware de Laravel gagne une flexibilité significative par paramétrage, permettant un comportement dynamique basé sur des données d'exécution. Cela est particulièrement utile pour des scénarios tels que le contrôle d'accès basé sur les rôles, la limitation des taux ou toute situation exigeant la logique middleware configurable.

Voici un exemple démontrant la protection des routes basée sur les rôles à l'aide du middleware paramétré:

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);
    }
}
Copier après la connexion

Ce middleware vérifie si l'utilisateur authentifié possède l'un des rôles spécifiés. Voyons comment il est utilisé dans la définition de l'itinéraire:

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');
});
Copier après la connexion
Les paramètres

les paramètres :editor et :admin transmis au middleware déterminent dynamiquement les rôles requis. Cette approche maintient des itinéraires et des contrôleurs propres tout en mettant en œuvre une autorisation sophistiquée. La puissance du middleware paramétré réside dans sa capacité à injecter des données spécifiques au contexte dans la logique du middleware, résultant en un code plus adaptable et maintenable.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal