"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Maîtriser le middleware dans Laravel : un guide détaillé

Maîtriser le middleware dans Laravel : un guide détaillé

Publié le 2024-07-31
Parcourir:480

Mastering Middleware in Laravel: An In-Depth Guide

Alors que je parcourais le labyrinthe du développement Web, une fonctionnalité a constamment éclairé mon chemin : le système middleware de Laravel. Le middleware ne se contente pas de filtrer les requêtes ; il transforme les applications, garantissant sécurité, performances et expériences utilisateur transparentes. Que vous travailliez sur l'authentification, la journalisation ou des problèmes transversaux, le middleware peut vous aider à les gérer avec élégance.

Comprendre le middleware

Le middleware agit comme un pont entre une demande et une réponse, jouant un rôle central dans le cycle de vie demande-réponse dans une application Web. Tout d’abord, décomposons ce que sont une demande et une réponse. Une requête est adressée par un client (généralement le navigateur d'un utilisateur) à un serveur demandant des ressources spécifiques telles que des pages Web, des données ou d'autres services.

Cette requête contient des informations essentielles, notamment des méthodes HTTP (GET, POST, ...), des en-têtes et potentiellement un corps contenant des données. Une fois que le serveur reçoit cette demande, il traite les informations nécessaires et génère une réponse.

Une réponse est la réponse du serveur à la demande du client. Il contient l'état de la demande (par exemple, réussite, échec), les en-têtes et un corps qui inclut souvent du HTML, JSON ou d'autres formats de données que le client utilise pour afficher une page Web ou exécuter d'autres actions.

Le middleware entre en jeu en tant qu'intermédiaire qui peut inspecter, modifier ou même arrêter ces demandes et réponses. Il fonctionne avant que la requête n'atteigne la logique principale de l'application et avant que la réponse ne soit renvoyée au client.

Nous avons besoin d'un middleware car il permet à un code modulaire et réutilisable de gérer des problèmes transversaux tels que l'authentification, la journalisation et la manipulation des données sans encombrer la logique principale de l'application. Par exemple, le middleware peut garantir que seuls les utilisateurs authentifiés peuvent accéder à certaines routes, enregistrer chaque demande à des fins de débogage ou transformer les données de la demande avant qu'elles n'atteignent le contrôleur.

Création d'un middleware

Créer un middleware dans Laravel est simple. Vous pouvez générer un nouveau middleware à l'aide de la commande Artisan.

php artisan make:middleware CheckAge

Cette commande créera un nouveau fichier middleware CheckAge dans le répertoire app/Http/Middleware. Dans ce fichier, vous pouvez définir la logique qui doit être exécutée pour chaque requête.

age 



Dans cet exemple, le middleware vérifie l'attribut age dans la requête. Si l'âge est inférieur ou égal à 200, il redirige l'utilisateur vers la route home. Sinon, cela permet à la demande de continuer.

Enregistrement du middleware

Une fois que vous avez créé votre middleware, vous devez l'enregistrer dans le noyau. Le noyau est le cœur de l'application Laravel qui gère l'ensemble du cycle de vie d'une requête HTTP. Il agit comme une plateforme centrale qui orchestre le flux des requêtes à travers différentes couches middleware avant qu'elles n'atteignent les routes et les contrôleurs de l'application.

Il existe deux manières d'enregistrer un middleware dans votre fichier app/Http/Kernel.php :

  1. Middleware global : Ces middlewares s'exécutent lors de chaque requête adressée à
    ton application.

  2. Route Middleware : Ces middlewares peuvent être attribués à des
    itinéraires.

Pour enregistrer notre middleware CheckAge en tant que middleware de route, ajoutez-le au tableau $routeMiddleware dans le noyau :

protected $routeMiddleware = [
    // Other middleware
    'checkAge' => \App\Http\Middleware\CheckAge::class,
];

Vous pouvez désormais appliquer ce middleware à vos routes ou groupes de routes :

Route::get('admin', function () {
    // Only accessible if age > 200
})->middleware('checkAge');

Techniques middleware avancées

Le middleware de Laravel ne se limite pas à de simples vérifications. Voici quelques techniques avancées pour tirer le meilleur parti du middleware :

  1. Paramétrage du middleware

Le middleware peut accepter des paramètres supplémentaires. Ceci est utile pour les scénarios dans lesquels le comportement du middleware peut changer en fonction des paramètres.

public function handle($request, Closure $next, $role)
{
    if (! $request->user()->hasRole($role)) {
        // Redirect or abort
    }

    return $next($request);
}
  1. Middleware de regroupement

Vous pouvez regrouper plusieurs middlewares sous une seule clé, ce qui permet d'appliquer un ensemble de middlewares à de nombreuses routes.

protected $middlewareGroups = [
    'web' => [
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        // more middleware
    ],
];

Application du groupe middleware aux routes :

Route::middleware(['web'])->group(function () {
    Route::get('/', function () {
        // Uses 'web' middleware group
    });

    Route::get('dashboard', function () {
        // Uses 'web' middleware group
    });
});
  1. Terminaison du middleware

Middleware peut définir une méthode terminate qui sera appelée une fois la réponse envoyée au navigateur. Ceci est particulièrement utile pour des tâches telles que la journalisation ou l'analyse.

public function terminate($request, $response)
{
    // Log request and response
}

Conclusion

En maîtrisant le middleware, vous pouvez créer des applications non seulement sécurisées et performantes, mais également maintenables et évolutives. Que vous gériez l'authentification, la journalisation ou même ajustiez le comportement de votre application avec des paramètres personnalisés, le middleware fournit une solution propre et élégante.

Exploitez la puissance du middleware dans vos projets Laravel et voyez comment il transforme la façon dont vous gérez les préoccupations transversales. Bon codage !

Déclaration de sortie Cet article est reproduit sur : https://dev.to/cyrilmuchemi/mastering-middleware-in-laravel-an-in-owned-guide-4bde?1 En cas de violation, veuillez contacter [email protected] pour supprimer il
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3