


Comprendre le middleware Laravel : une plongée approfondie dans la nouvelle approche de Laravel
Introduction au middleware dans Laravel
Le middleware est un concept essentiel dans le développement Web moderne, et Laravel, un framework PHP populaire, l'utilise largement pour gérer les requêtes HTTP. Que vous construisiez une API simple ou une application Web à grande échelle, comprendre le middleware dans Laravel est essentiel pour écrire un code plus propre, plus gérable et plus efficace.
Dans cet article, nous approfondirons le middleware Laravel, expliquant de quoi il s'agit, pourquoi vous devriez l'utiliser et comment l'utiliser efficacement. Nous examinerons également la structure du middleware dans Laravel 11, qui a connu des changements importants, notamment la suppression du noyau HTTP. Nous conclurons en parcourant la création et l'utilisation de middleware personnalisé dans Laravel.
Table des matières
- Qu'est-ce que le middleware ?
- Pourquoi utiliser un middleware ?
- Types de middleware dans Laravel
- Avantages du middleware
- Structure du middleware dans Laravel 11
- Comment créer et utiliser un middleware personnalisé
- Exemples pratiques d'utilisation du middleware
- Meilleures pratiques pour le middleware dans Laravel
- Conclusion
1. Qu'est-ce qu'un middleware ?
Le middleware est essentiellement un filtre ou une couche qui se situe entre la requête HTTP entrante et votre application. Il intercepte les requêtes entrantes et peut effectuer diverses tâches, telles que l'authentification, la journalisation et la modification des requêtes, avant de transmettre la requête à la couche suivante. Après traitement, le middleware peut permettre à la demande de passer à l'application, de modifier la réponse ou de rejeter purement et simplement la demande.
En termes plus simples, le middleware est comme une barrière de sécurité ou un gardien pour votre application. Chaque requête adressée à votre application doit passer par un middleware, et vous pouvez définir différents comportements en fonction du type de requête.
2. Pourquoi utiliser un middleware ?
Le middleware fournit un mécanisme pratique pour filtrer ou modifier les requêtes HTTP entrant dans votre application. Voici quelques raisons courantes pour lesquelles le middleware est utilisé dans les applications Laravel :
Authentification et autorisation : le middleware peut garantir que seuls les utilisateurs authentifiés ou les utilisateurs disposant d'autorisations spécifiques accèdent à certaines routes.
Mode maintenance : le middleware peut vérifier si l'application est en mode maintenance et renvoyer un message de maintenance pour toutes les demandes entrantes.
Journalisation et surveillance : le middleware peut enregistrer chaque demande ou surveiller les performances, aidant ainsi les développeurs à suivre les performances des applications.
CORS (Cross-Origin Resource Sharing) : le middleware peut gérer les en-têtes CORS, autorisant ou refusant les requêtes provenant d'origines externes.
Modification de la demande : vous souhaiterez peut-être modifier les données de la demande avant qu'elles n'atteignent votre contrôleur, par exemple en coupant les chaînes d'entrée ou en nettoyant les entrées.
En utilisant un middleware, vous gardez la logique de votre application propre et séparée des préoccupations transversales, telles que la sécurité, la journalisation ou la modification des demandes.
3. Types de middleware dans Laravel
Dans Laravel, les middlewares peuvent généralement être classés en trois types :
Middleware mondial
Un middleware global est appliqué à chaque requête HTTP entrant dans votre application. Il est défini une fois et s’applique automatiquement à tous les itinéraires. Par exemple, vous souhaiterez peut-être activer la journalisation pour chaque demande adressée à l'application.
Middleware spécifique à un itinéraire
Ce type de middleware s'applique uniquement à des routes ou groupes de routes spécifiques. Vous pouvez l'attacher à des itinéraires individuels ou à un groupe d'itinéraires partageant un comportement similaire. Par exemple, vous pouvez appliquer un middleware d'authentification uniquement aux itinéraires qui nécessitent un utilisateur connecté.
Groupes de middlewares
Les groupes de middleware vous permettent de définir plusieurs middlewares qui peuvent être appliqués ensemble en tant que groupe. Laravel est livré avec certains groupes de middleware par défaut, tels que les groupes Web et API. Ces groupes regroupent des middlewares qui doivent être appliqués respectivement à toutes les requêtes Web ou API.
4. Avantages du middleware
Le middleware offre plusieurs avantages aux développeurs Laravel :
1. Séparation des préoccupations
Le middleware aide à séparer les problèmes en isolant la logique spécifique du flux d'application principal. Cela facilite la maintenance et l'extension de votre application car les responsabilités de l'application sont divisées en couches distinctes.
2. Réutilisabilité
Une fois défini, le middleware peut être réutilisé sur plusieurs routes et applications. Cela garantit que vous n'écrivez la logique du middleware qu'une seule fois et que vous l'appliquez chaque fois que nécessaire.
3. Sécurité
Le middleware vous permet de mettre en œuvre une logique liée à la sécurité, telle que l'authentification et l'autorisation, au point d'entrée de votre application, garantissant ainsi que les requêtes non autorisées n'atteignent jamais votre logique principale.
4. Personnalisation
Le middleware Laravel est flexible et personnalisable. Vous pouvez créer un middleware qui modifie les demandes, redirige les utilisateurs en fonction de conditions spécifiques ou manipule les réponses avant qu'elles ne soient renvoyées au client.
5. Gestion centralisée des erreurs
Le middleware vous permet de gérer les erreurs et les exceptions de manière centralisée. Vous pouvez détecter les exceptions ou les erreurs de validation et les gérer de manière uniforme dans toute votre application.
5. Structure du middleware dans Laravel 11
Avec Laravel 11, il y a eu des changements structurels importants, notamment dans la façon dont le middleware est géré. Avant Laravel 11, toutes les configurations de middleware étaient gérées dans le fichier Http Kernel (app/Http/Kernel.php). Cependant, Laravel 11 introduit une approche plus propre et plus modulaire.
La suppression du noyau Http
Dans Laravel 11, le noyau Http a été supprimé et le middleware est désormais configuré dans le fichier bootstrap/app.php. Cela peut sembler un changement de paradigme important pour les développeurs familiers avec la structure traditionnelle du noyau Http, mais cela permet un moyen plus simple et plus flexible d'enregistrer et de gérer le middleware.
Voici à quoi ressemble le fichier bootstrap/app.php par défaut dans Laravel 11 :
<?php return Application::configure() ->withProviders() ->withRouting( web: __DIR__.'/../routes/web.php', // api: __DIR__.'/../routes/api.php', commands: __DIR__.'/../routes/console.php', // channels: __DIR__.'/../routes/channels.php', ) ->withMiddleware(function (Middleware $middleware) { // }) ->withExceptions(function (Exceptions $exceptions) { // })->create(); ?>``` **Middleware Management** In Laravel 11, middleware is now handled through the withMiddleware() method, which accepts a callable function. Inside this callable, you can register, modify, or remove middleware. ## 6. How to Create and Use Custom Middleware in Laravel Creating custom middleware in Laravel allows you to extend the default behavior of your application. Here’s how to create and use custom middleware in Laravel: Step 1: Create the Middleware You can create middleware using the Artisan command: php artisan make:middleware CheckAge This command will create a new middleware class in the app/Http/Middleware directory. The newly created CheckAge.php file will look something like this: ```php <?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; class CheckAge { /** * Handle an incoming request. */ public function handle(Request $request, Closure $next) { if ($request->age <= 18) { return redirect('home'); } return $next($request); } }?>``` In this example, the CheckAge middleware checks the user's age and redirects them if they are under 18. If the user passes the condition, the request continues to the next layer. **Step 2: Register the Middleware** Since Laravel 11 no longer uses the Http Kernel, you will need to register your middleware in the bootstrap/app.php file. Here’s how you can register your custom middleware: ```php return Application::configure() ->withProviders() ->withRouting( web: __DIR__.'/../routes/web.php', ) ->withMiddleware(function (Middleware $middleware) { $middleware->alias('check.age', \App\Http\Middleware\CheckAge::class); }) ->create();``` Now, your middleware alias check.age is available for use in your routes. Step 3: Apply the Middleware to Routes Once the middleware is registered, you can apply it to routes or route groups: ```php <?php Route::get('/dashboard', function () { // Only accessible if age > 18 })->middleware('check.age');?>``` ## 7. Practical Examples of Using Middleware Middleware can be used for a variety of tasks in Laravel. Let’s look at a few practical use cases. **Example 1: Logging Requests** You can create middleware to log incoming requests to a file or a logging service. This can help you monitor the behavior of your application. ```php <?php namespace App\Http\Middleware; use Closure; use Illuminate\Support\Facades\Log; use Illuminate\Http\Request; class LogRequest { public function handle(Request $request, Closure $next) { Log::info('Request URL: ' . $request->url()); return $next($request); } }?>``` **Example 2: Checking User Roles** You can use middleware to restrict access based on user roles. For example, only allow access to certain routes if the user has an admin role. ```php <?php namespace App\Http\Middleware; use Closure; use Illuminate\Support\Facades\Auth; class CheckRole { public function handle($request, Closure $next) { if (Auth::user() && Auth::user()->role != 'admin') { return redirect('/home'); } return $next($request); } }?>``` ## 8. Best Practices for Middleware in Laravel Here are some best practices to follow when working with middleware in Laravel: **1. Keep Middleware Focused** Middleware should be responsible for a single task. If you find that your middleware is doing too much, consider splitting it into smaller, more focused middleware. **2. Use Route-Specific Middleware** Use route-specific middleware when possible. Applying middleware globally can lead to performance overhead and unnecessary checks on routes that don’t need them. **3. Avoid Complex Logic** Middleware should be kept simple. Complex logic or business rules should be handled in the controller
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

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.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

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 !

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)

Sujets chauds











Dans PHP, Password_Hash et Password_verify Les fonctions doivent être utilisées pour implémenter le hachage de mot de passe sécurisé, et MD5 ou SHA1 ne doit pas être utilisé. 1) Password_hash génère un hachage contenant des valeurs de sel pour améliorer la sécurité. 2) Password_verify Vérifiez le mot de passe et assurez-vous la sécurité en comparant les valeurs de hachage. 3) MD5 et SHA1 sont vulnérables et manquent de valeurs de sel, et ne conviennent pas à la sécurité de mot de passe moderne.

PHP et Python ont chacun leurs propres avantages et choisissent en fonction des exigences du projet. 1.Php convient au développement Web, en particulier pour le développement rapide et la maintenance des sites Web. 2. Python convient à la science des données, à l'apprentissage automatique et à l'intelligence artificielle, avec syntaxe concise et adaptée aux débutants.

PHP est largement utilisé dans le commerce électronique, les systèmes de gestion de contenu et le développement d'API. 1) E-commerce: Utilisé pour la fonction de panier et le traitement des paiements. 2) Système de gestion du contenu: utilisé pour la génération de contenu dynamique et la gestion des utilisateurs. 3) Développement des API: Utilisé pour le développement de l'API RESTful et la sécurité de l'API. Grâce à l'optimisation des performances et aux meilleures pratiques, l'efficacité et la maintenabilité des applications PHP sont améliorées.

Le type PHP invite à améliorer la qualité et la lisibilité du code. 1) Conseils de type scalaire: Depuis PHP7.0, les types de données de base sont autorisés à être spécifiés dans les paramètres de fonction, tels que INT, Float, etc. 2) Invite de type de retour: Assurez la cohérence du type de valeur de retour de fonction. 3) Invite de type d'union: Depuis PHP8.0, plusieurs types peuvent être spécifiés dans les paramètres de fonction ou les valeurs de retour. 4) Invite de type nullable: permet d'inclure des valeurs nulles et de gérer les fonctions qui peuvent renvoyer les valeurs nulles.

PHP est toujours dynamique et occupe toujours une position importante dans le domaine de la programmation moderne. 1) La simplicité de PHP et le soutien communautaire puissant le rendent largement utilisé dans le développement Web; 2) sa flexibilité et sa stabilité le rendent exceptionnelle dans la gestion des formulaires Web, des opérations de base de données et du traitement de fichiers; 3) PHP évolue et optimise constamment, adapté aux débutants et aux développeurs expérimentés.

PHP est principalement la programmation procédurale, mais prend également en charge la programmation orientée objet (POO); Python prend en charge une variété de paradigmes, y compris la POO, la programmation fonctionnelle et procédurale. PHP convient au développement Web, et Python convient à une variété d'applications telles que l'analyse des données et l'apprentissage automatique.

L'utilisation de déclarations de prétraitement et l'APD dans PHP peut effectivement empêcher les attaques d'injection SQL. 1) Utilisez PDO pour vous connecter à la base de données et définir le mode d'erreur. 2) Créez des instructions de prétraitement via la méthode de préparation et transmettez des données à l'aide des espaces réservés et exécutez des méthodes. 3) Traitez les résultats de la requête et assurez la sécurité et les performances du code.

PHP et Python ont leurs propres avantages et inconvénients, et le choix dépend des besoins du projet et des préférences personnelles. 1.Php convient au développement rapide et à la maintenance des applications Web à grande échelle. 2. Python domine le domaine de la science des données et de l'apprentissage automatique.
