recherche
Maisoncadre phpLaravelComment implémenter des middleware et des filtres personnalisés dans les applications Laravel?

Comment implémenter des middleware et des filtres personnalisés dans les applications Laravel?

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:

  1. Créez le middleware: Utilisez la commande d'Artisan: php artisan make:middleware CheckAge . Cela crée un nouveau fichier middleware dans app/Http/Middleware/CheckAge.php .
  2. Définissez la logique du middleware: dans la méthode 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>
  1. Enregistrez le middleware: vous devez enregistrer votre middleware nouvellement créé dans app/Http/Kernel.php . Ajoutez-le au tableau $routeMiddleware :
 <code class="php">protected $routeMiddleware = [ // ... other middleware ... 'checkage' => \App\Http\Middleware\CheckAge::class, ];</code>
  1. Attribuez le middleware à un itinéraire: Enfin, affectez le middleware à un itinéraire spécifique ou un groupe de routes dans vos 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.

Quelles sont les meilleures pratiques pour créer un middleware Laravel efficace et réutilisable?

  • Principe de responsabilité unique: chaque middleware doit avoir une tâche spécifique. Évitez de créer du middleware monolithique qui gère plusieurs opérations non liées. Cela améliore la lisibilité, la maintenabilité et la réutilisabilité.
  • Gardez-le concis: le middleware doit être court et concentré. La logique complexe doit être extraite dans des services ou des classes séparés.
  • Utilisez l'injection de dépendance: injectez les dépendances dans votre constructeur de middleware au lieu de les créer à l'intérieur de la méthode handle . Cela améliore la testabilité et la maintenabilité.
  • Gestion des erreurs appropriée: implémentez une gestion des erreurs robuste pour gérer gracieusement les exceptions et empêcher un comportement inattendu. Les erreurs de journalisation de manière appropriée.
  • Testabilité: Écrivez des tests unitaires pour votre middleware pour s'assurer qu'ils fonctionnent correctement et pour attraper des régressions. Utilisez une moquerie pour isoler votre middleware à partir de dépendances externes pendant les tests.
  • Utilisez des interfaces (pour des scénarios complexes): pour une logique de middleware plus complexe où vous pourriez avoir besoin d'implémentations différentes en fonction du contexte, envisagez d'utiliser des interfaces et des classes abstraites.

Comment puis-je utiliser le middleware pour gérer l'authentification et l'autorisation dans votre application Laravel?

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 .

Quels sont les pièges courants à éviter lors de la mise en œuvre de middleware et de filtres personnalisés dans Laravel?

  • Boucles infinies: soyez prudent lors de la redirection ou de la fin des demandes dans le middleware. Le middleware mal structuré peut créer des boucles infinies si elle n'est pas gérée correctement.
  • Sur-utilisation de middleware: Évitez de chaîner trop de middleware ensemble, car cela peut conduire à une dégradation des performances. Optimisez votre pile de middleware pour l'efficacité.
  • Ignorer les exceptions: gérez toujours les exceptions potentielles au sein de votre middleware pour empêcher les plantages d'applications inattendus. Utilisez try...catch Blocks pour gérer gracieusement les erreurs.
  • Couplage serré: Évitez de coupler étroitement votre middleware à des contrôleurs ou des modèles spécifiques. Concevez votre middleware pour être aussi générique et réutilisable que possible.
  • Vulnérabilités de sécurité: valider et désinfecter soigneusement toutes les données transmises via votre middleware pour éviter les vulnérabilités de sécurité comme les scripts inter-sites (XSS) ou l'injection SQL. Désinfecter toujours les entrées des utilisateurs.
  • Oublier d'enregistrer le middleware: assurez-vous d'enregistrer correctement votre middleware personnalisé dans le tableau $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!

Déclaration
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
Édition de documents collaboratifs: rationalisation du flux de travail dans les équipes distribuéesÉdition de documents collaboratifs: rationalisation du flux de travail dans les équipes distribuéesApr 27, 2025 am 12:21 AM

L'édition de documents collaborative est un outil efficace pour les équipes distribuées afin d'optimiser leurs workflows. Il améliore la communication et les progrès du projet grâce à des boucles de collaboration et de rétroaction en temps réel, et les outils communs incluent Google Docs, Microsoft Teams et Notion. Faites attention à des défis tels que le contrôle des versions et la courbe d'apprentissage lorsque vous l'utilisez.

Combien de temps la version Laravel précédente sera-t-elle prise en charge?Combien de temps la version Laravel précédente sera-t-elle prise en charge?Apr 27, 2025 am 12:17 AM

ThepreviousVersionofLaraveLissupported withbugfixesforsixmonthsandSecurityFixesForoneyEarfteranEwmaJorversion'srelease.Croite-compritsThisSupporttimelineScricialForPlanningUpgrades, assurant la mise en place de la stabilité et la mise en place des éléments et les économies de lamence, et la stabilité et la conduite de la rémunération et la santé

Tirer parti des fonctionnalités de Laravel pour le développement du frontend et du backendTirer parti des fonctionnalités de Laravel pour le développement du frontend et du backendApr 27, 2025 am 12:16 AM

LaravelCanBeefectively UsedForBothFronttendandBackendDevelopment.1) Backend: Utilizelaravel'SeloventormforsImpplifiedDatabaseInteractions.2) Frontend: LefetherBlatemplateForCleanhtmland Integratevue.jsfordynamicsPas, STANDSEANSHEST-BACKENDINTEG.

Laravel peut-il être utilisé pour le développement complet de la pile (backend frontend)?Laravel peut-il être utilisé pour le développement complet de la pile (backend frontend)?Apr 27, 2025 am 12:10 AM

LaravelCanBeusedFullLStackDevelopment.1) BackendmasteryWithLaravel'SexpressivesYntaxAndFeaturesLILLICYELOQUENTormfordatabasemanagement.2)

Quels outils aident à la mise à niveau vers la dernière version de Laravel?Quels outils aident à la mise à niveau vers la dernière version de Laravel?Apr 27, 2025 am 12:02 AM

Réponse: Les meilleurs outils pour la mise à niveau de Laravel incluent le guide de mise à niveau de Laravel, Laravelshift, Rector, Composer et Laravelpint. 1. Utilisez le guide de mise à niveau de Laravel comme feuille de route de mise à niveau. 2. Utilisez Laravelshift pour automatiser la plupart des travaux de mise à niveau, mais cela nécessite un examen manuel. 3. Refacteur automatiquement le code via le recteur, et vous devez comprendre et éventuellement personnaliser ses règles. 4. Utilisez le compositeur pour gérer les dépendances et faire attention aux éventuels conflits de dépendance. 5. Exécutez Laravelpint pour maintenir la cohérence du style de code, mais il ne résout pas les problèmes fonctionnels.

Au-delà de l'appel de zoom: stratégies créatives pour connecter les équipes distribuéesAu-delà de l'appel de zoom: stratégies créatives pour connecter les équipes distribuéesApr 26, 2025 am 12:24 AM

ToenhanceengagementAndCoheSionAmongDstributedTeamsBeyondzoom, implémentations de typeStrates: 1) OrganizeVirtualCoffeebreaksForInformalChats, 2) usEasynchronousToolSlikeslackFornon-Workdissions, 3) IntrodugamificationwithTeamGamesorChallengs, and4) encourage

Quels sont les changements de rupture dans la dernière version de Laravel?Quels sont les changements de rupture dans la dernière version de Laravel?Apr 26, 2025 am 12:23 AM

Laravel10 introducesseveralBreakingChanges: 1) itRequiresphp8.1orHigher, 2) theRouserviceProviderNowUSESABOOTMethodForLoadingRoutes, 3) thewithetimestamps () MethodonEloventrelationShipSepresecated, and4) CLASSNOWPRES

Le paradoxe de la productivité: maintenir la concentration et la motivation dans des contextes éloignésLe paradoxe de la productivité: maintenir la concentration et la motivation dans des contextes éloignésApr 26, 2025 am 12:17 AM

TOMAINTAINFOCUSANDMOTIVATIONINREMOTEWork, CreateAstructuredenvironment, GestiondigitalDistractions, FosterMotivation ThroughsocialInteractions et legoalseting, maintien de la vie de vie et usureAppropriateTechnology.1) SetUpadediatedWorkspace andstickToaroutine.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

mPDF

mPDF

mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) ​​et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

MantisBT

MantisBT

Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

Listes Sec

Listes Sec

SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.