Implémentation de middleware personnalisé:
Le middleware de Laravel fournit un mécanisme puissant pour filtrer les demandes HTTP entrant dans votre application. La création de middleware personnalisés vous permet d'injecter votre propre logique dans le cycle de vie de la demande. Voici un guide étape par étape:
php artisan make:middleware CheckAge
. Cela crée un nouveau fichier middleware dans app/Http/Middleware/CheckAge.php
.handle
de votre middleware, vous placera votre logique personnalisée. Cette méthode reçoit une demande ( $request
) et une fermeture ( $next
). La fermeture représente le middleware suivant ou le gestionnaire d'itinéraire. Exemple:<code class="php"><?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; class CheckAge { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse */ public function handle(Request $request, Closure $next) { if ($request->age </code>
app/Http/Kernel.php
. Ajoutez-le au tableau $routeMiddleware
:<code class="php">protected $routeMiddleware = [ // ... other middleware ... 'checkage' => \App\Http\Middleware\CheckAge::class, ];</code>
routes/web.php
ou routes/api.php
Fichier:<code class="php">Route::get('/profile', [ProfileController::class, 'show'])->middleware('checkage');</code>
Implémentation de filtres personnalisés (Remarque: la terminologie de Laravel utilise généralement "middleware" au lieu de "filtres"):
Alors que Laravel n'utilise pas explicitement le terme "filtre" de la même manière que certains cadres plus anciens, le middleware sert efficacement le même objectif. L'exemple de code ci-dessus montre un comportement de type filtre en vérifiant l'âge et en redirigeant si la condition n'est pas remplie. La méthode handle
dans le middleware agit comme la fonction filtrante.
handle
. Cela améliore la testabilité et la maintenabilité. Laravel fournit un middleware intégré pour l'authentification ( auth
) et l'autorisation ( auth.basic
, can
, etc.). Vous pouvez les utiliser directement ou créer des middleware personnalisés pour étendre ou personnaliser la logique d'authentification / d'autorisation.
Exemple à l'aide de middleware intégré:
<code class="php">Route::get('/profile', [ProfileController::class, 'show'])->middleware('auth'); //Requires authentication Route::get('/admin', [AdminController::class, 'index'])->middleware('auth', 'admin'); //Requires authentication and admin role (assuming you have an 'admin' middleware defined)</code>
Exemple d'autorisation personnalisée Middleware:
<code class="php"><?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; class CheckAdmin { public function handle(Request $request, Closure $next) { if (Auth::check() && Auth::user()->isAdmin()) { return $next($request); } abort(403, 'Unauthorized'); // Return 403 Forbidden if not an admin } }</code>
N'oubliez pas d'enregistrer ce middleware CheckAdmin
dans votre fichier app/Http/Kernel.php
.
try...catch
Blocks pour gérer gracieusement les erreurs.$routeMiddleware
d' app/Http/Kernel.php
. Une erreur courante est d'oublier cette étape, rendant le middleware inefficace.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!