Maison développement back-end tutoriel php Comprendre le middleware Laravel : une plongée approfondie dans la nouvelle approche de Laravel

Comprendre le middleware Laravel : une plongée approfondie dans la nouvelle approche de Laravel

Sep 10, 2024 pm 06:30 PM

Understanding Laravel Middleware: A Deep Dive into Laravel #s New Approach

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

  1. Qu'est-ce que le middleware ?
  2. Pourquoi utiliser un middleware ?
  3. Types de middleware dans Laravel
  4. Avantages du middleware
  5. Structure du middleware dans Laravel 11
  6. Comment créer et utiliser un middleware personnalisé
  7. Exemples pratiques d'utilisation du middleware
  8. Meilleures pratiques pour le middleware dans Laravel
  9. 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








Copier après la connexion

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

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 !

Article chaud

<🎜>: Grow A Garden - Guide de mutation complet
3 Il y a quelques semaines By DDD
<🎜>: Bubble Gum Simulator Infinity - Comment obtenir et utiliser les clés royales
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Comment déverrouiller le grappin
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Système de fusion, expliqué
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Sujets chauds

Tutoriel Java
1669
14
Tutoriel PHP
1273
29
Tutoriel C#
1256
24
Expliquez le hachage de mot de passe sécurisé dans PHP (par exemple, Password_Hash, Password_verify). Pourquoi ne pas utiliser MD5 ou SHA1? Expliquez le hachage de mot de passe sécurisé dans PHP (par exemple, Password_Hash, Password_verify). Pourquoi ne pas utiliser MD5 ou SHA1? Apr 17, 2025 am 12:06 AM

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: comparaison de deux langages de programmation populaires PHP et Python: comparaison de deux langages de programmation populaires Apr 14, 2025 am 12:13 AM

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 en action: Exemples et applications du monde réel PHP en action: Exemples et applications du monde réel Apr 14, 2025 am 12:19 AM

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.

Comment fonctionne la résistance au type PHP, y compris les types scalaires, les types de retour, les types d'union et les types nullables? Comment fonctionne la résistance au type PHP, y compris les types scalaires, les types de retour, les types d'union et les types nullables? Apr 17, 2025 am 12:25 AM

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.

La pertinence durable de PHP: est-elle toujours vivante? La pertinence durable de PHP: est-elle toujours vivante? Apr 14, 2025 am 12:12 AM

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 et Python: différents paradigmes expliqués PHP et Python: différents paradigmes expliqués Apr 18, 2025 am 12:26 AM

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.

Comment empêchez-vous l'injection SQL en PHP? (Déclarations préparées, APD) Comment empêchez-vous l'injection SQL en PHP? (Déclarations préparées, APD) Apr 15, 2025 am 12:15 AM

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: exemples de code et comparaison PHP et Python: exemples de code et comparaison Apr 15, 2025 am 12:07 AM

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.

See all articles