


Laravel Middleware (middleware) Combat pratique: contr?le de l'autorisation et journalisation
Apr 30, 2025 pm 02:03 PMDans Laravel, le middleware est utilisé pour implémenter le contr?le et la journalisation de l'autorisation. 1) Créez du middleware de contr?le d'autorisation et décidez d'autoriser l'accès en vérifiant les autorisations des utilisateurs. 2) Créez du middleware de journalisation pour enregistrer des informations détaillées sur les demandes et les réponses.
introduction
Dans le développement de Laravel, le middleware est un outil puissant et flexible qui peut exécuter une logique spécifique avant ou après la demande atteint l'application. Aujourd'hui, nous plongerons dans la fa?on d'utiliser le middleware pour implémenter le contr?le et la journalisation des autorisations, deux fonctionnalités qui sont très courantes et importantes dans les projets réels. Grace à cet article, vous apprendrez à créer et à utiliser des middleware, à comprendre comment cela fonctionne et à ma?triser certains conseils pratiques et meilleures pratiques.
Examen des connaissances de base
Dans Laravel, le middleware est la couche intermédiaire qui gère les demandes HTTP. Ils peuvent être utilisés pour filtrer les demandes, modifier les demandes et les réponses et exécuter une logique commune. Le concept de middleware est similaire à un pipeline. Lorsque les demandes passent par ce pipeline, elles peuvent être interceptées et traitées par middleware.
Laravel fournit plusieurs middleware intégrés, tels que auth
Middleware pour vérifier si l'utilisateur est connecté csrf
pour empêcher les attaques de contrefa?on de demande croisée. Nous pouvons facilement créer des middleware personnalisés pour répondre aux besoins spécifiques.
Analyse du concept de base ou de la fonction
Définition et fonction du middleware
Le middleware est une classe de Laravel qui implémente les méthodes handle
. Cette méthode re?oit l'objet de demande et une fermeture (représentant la prochaine étape de traitement de la demande), peut traiter la demande, puis décider de passer la demande au middleware suivant ou de renvoyer directement la réponse.
Le middleware a une fonction très large, de la journalisation simple de demande au contr?le complexe d'autorisation, il peut être implémenté via middleware. Son avantage est qu'il peut être retiré du contr?leur, ce qui rend le code plus clair et plus maintenable.
Un exemple de middleware simple:
namespace app \ http \ middleware; Utiliser la fermeture; Utiliser illuminate \ http \ request; Classe LogRequestMiddleware { Poignée de la fonction publique (demande $ demande, fermeture $ suivant) { // Journal du journal avant que la demande ne soit traitée \ log :: info ('requête re?ue:'. $ Request-> méthode (). ''. $ Request-> url ()); // Passez la demande au middleware ou contr?leur suivant Retour $ Next ($ request); } }
Comment ?a marche
Lorsqu'une demande entre dans une application Laravel, elle passe par un pipeline middleware. Chaque middleware peut traiter la demande, puis décider de passer la demande au middleware suivant ou de renvoyer la réponse directement.
L'Ordre d'exécution du middleware est défini par $middleware
et $routeMiddleware
dans le fichier Kernel.php
. Les demandes sont passées par le middleware dans l'ordre dans ces tableaux.
Lors du traitement d'une demande, le middleware peut:
- Modifier l'objet de demande
- Exécuter une logique (comme la journalisation)
- Décidez de passer la demande au middleware ou contr?leur suivant
- Modifier l'objet de réponse (dans la méthode
terminate
)
Le principe de travail du middleware est similaire au modèle d'oignon. Demandes entrent à partir de la couche externe, traitées par plusieurs middleware, et enfin arrivez au contr?leur, puis passez-la de la couche intérieure à la couche extérieure, puis renvoyez-la au client après le traitement par le middleware.
Exemple d'utilisation
Contr?le d'autorisation Middleware
Dans les projets réels, le contr?le de l'autorisation est une exigence commune. Nous pouvons créer un middleware pour vérifier si l'utilisateur a la permission d'accéder à un certain itinéraire.
namespace app \ http \ middleware; Utiliser la fermeture; Utiliser illuminate \ http \ request; Utiliser illuminate \ support \ FACADES \ Auth; Class CheckPermissionMiddleware { Poignée de la fonction publique (demande $ demande, fermeture $ suivant, autorisation $) { if (auth :: user () -> can ($ permission)) { retourner $ suivant ($ demande); } return réponse () -> json (['error' => 'non autorisé'], 403); } }
Lorsque vous utilisez ce middleware, vous pouvez spécifier les autorisations requises dans la définition de routage:
Route :: get ('/ admin', function () { // Seuls les utilisateurs avec l'autorisation ?manage-admin? peuvent y accéder}) -> middleware (?permission: manage-admin?);
Journalisation du middleware
La journalisation est également une exigence commune, nous pouvons créer un middleware pour enregistrer les détails de chaque demande.
namespace app \ http \ middleware; Utiliser la fermeture; Utiliser illuminate \ http \ request; Utiliser illuminate \ support \ FACADES \ Log; Classe LogRequestMiddleware { Poignée de la fonction publique (demande $ demande, fermeture $ suivant) { // Journal des informations sur la demande de journal :: info (?demande re?ue?, [ 'méthode' => $ demande-> méthode (), 'url' => $ request-> url (), 'Headers' => $ request-> Headers-> all (), 'body' => $ demande-> all (), ])); retourner $ suivant ($ demande); } Fonction publique Termine (demande $ demande, $ Response) { // Enregistrer le journal des informations de réponse :: info ('réponse envoyée', [ 'status' => $ réponse-> getStaturScode (), 'contenu' => $ réponse-> getContent (), ])); } }
Erreurs courantes et conseils de débogage
Certains problèmes courants peuvent survenir lors de l'utilisation du middleware:
- Problème de commande middleware : si le middleware est incorrectement exécuté, cela peut entra?ner des erreurs logiques. Par exemple, la vérification de l'autorisation Middleware doit être exécutée avant de journaliser le middleware pour éviter les demandes de journalisation non autorisées.
- Erreur de passage des paramètres middleware : lors de l'utilisation du middleware avec des paramètres, assurez-vous que le passage des paramètres est correct. Par exemple, dans
CheckPermissionMiddleware
, le paramètre$permission
doit être passé correctement. - Middleware non enregistré : assurez-vous que le middleware est correctement enregistré dans le fichier
Kernel.php
, sinon le middleware ne sera pas exécuté.
Lors du débogage de ces problèmes, vous pouvez utiliser le système de journalisation de Laravel pour enregistrer l'exécution du middleware ou utiliser des outils de débogage (tels que XDebug) pour suivre le processus de demandes.
Optimisation des performances et meilleures pratiques
Il existe des optimisations de performances et des meilleures pratiques à noter lors de l'utilisation de middleware:
- évitez d'effectuer des opérations longues en middleware : le middleware doit être aussi léger que possible pour éviter d'effectuer des requêtes de base de données ou d'autres opérations longues dans le middleware pour éviter d'affecter le temps de réponse de la demande.
- En utilisant le cache : dans le middleware de vérifier l'autorisation, vous pouvez utiliser Cache pour stocker les informations d'autorisation de l'utilisateur pour éviter d'interroger la base de données à chaque fois que vous demandez.
- Optimisation de la journalisation : Dans le middleware de journalisation, le niveau de détail du journal peut être ajusté en fonction de l'environnement (tel que l'environnement de production ou l'environnement de développement) pour éviter d'enregistrer trop d'informations sur les journaux dans l'environnement de production.
Lors de l'écriture de middleware, vous devez également prêter attention à la lisibilité et à la maintenabilité du code:
- Utilisez la dénomination claire : la classe et les noms de méthode du middleware doivent exprimer clairement leurs fonctions.
- Ajoutez des commentaires : ajoutez des commentaires aux parties clés du middleware pour expliquer ses principes de r?le et de mise en ?uvre.
- Gardez la responsabilité unique du middleware : chaque middleware doit être responsable d'une seule fonction, en évitant de mettre plusieurs logiques non pertinentes dans le même middleware.
Grace à cet article, vous auriez d? ma?triser comment utiliser le middleware dans Laravel pour implémenter le contr?le et la journalisation des autorisations. Espérons que ces connaissances et techniques fonctionneront dans votre projet et vous aideront à écrire plus efficace et plus facile à maintenir le code.
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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

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

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

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Le modèle de référentiel est un modèle de conception utilisé pour découpler la logique métier à partir de la logique d'accès aux données. 1. Il définit les méthodes d'accès aux données via des interfaces (contrat); 2. Les opérations spécifiques sont implémentées par la classe de référentiel; 3. Le contr?leur utilise l'interface par injection de dépendance et ne contacte pas directement la source de données; 4. Les avantages incluent un code soigné, une testabilité solide, une maintenance facile et une collaboration d'équipe; 5. Applicable aux projets moyens et grands, les petits projets peuvent utiliser directement le modèle.

En tant que plate-forme de trading d'actifs numériques à la tête de Blockchain internationalement, Binance offre aux utilisateurs une expérience de trading s?re et pratique. Son application officielle intègre plusieurs fonctions de base telles que la visualisation du marché, la gestion des actifs, le trading de devises et le trading de devises fiduciaires.

Laravel'simplementation ofmvchaslimitations: 1) ControwersoftenHandleMoreThanJustDeciding WhoChichModelandViewTouse, Leado'fat'Controllers.2) eloentmodelsCantaTaOnAyAnany ResponsibilitysBeyondDataRepesent.3)

OKX est une plate-forme complète de services d'actifs numériques de renommée mondiale, offrant aux utilisateurs des produits et services diversifiés, notamment le spot, les contrats, les options, etc. Avec son expérience de fonctionnement fluide et son intégration de fonctions puissantes, son application officielle est devenue un outil commun pour de nombreux utilisateurs d'actifs numériques.

Binance est une plate-forme de trading d'actifs numériques de renommée mondiale, offrant aux utilisateurs des services de trading de crypto-monnaie sécurisés, stables et riches. Son application est simple à concevoir et puissant, prenant en charge une variété de types de transactions et d'outils de gestion des actifs.

Binance est l'une des plates-formes de trading d'actifs numériques bien connues au monde, offrant aux utilisateurs des services de trading de crypto-monnaie s?rs, stables et pratiques. Grace à l'application Binance, vous pouvez afficher les conditions du marché, acheter, vendre et la gestion des actifs à tout moment, n'importe où.

LaraveLolientsSupportsSubQueriesInselect, d'où, et d'orderByClauses, permettant à la FlexibledataRetrievalwithoutrawsql; 1.Useesectsub () ToaddCompuledColumns likepostcountperUser; 2.Usefromsub () OrclosionInfrom () totaleaTSubQueryArableforgouredData;

MockFacade est utilisée pour isoler les appels de service et éviter les opérations externes d'exécution réelles 1. Utilisez la réception de Mockery pour définir la méthode attendue 2. Utilisez et enrichiquez pour maintenir les appels de cha?ne 3. Définissez le nombre d'appels via une fois, etc. 4. Utiliser pour vérifier explicitement les limitations de paramètres de paramètre Inclue unique l'incapacité de vérifier automatiquement le contenu des paramètres.
