Maison  >  Article  >  cadre php  >  Quels sont les middlewares couramment utilisés dans Laravel ?

Quels sont les middlewares couramment utilisés dans Laravel ?

青灯夜游
青灯夜游original
2021-09-17 14:44:114474parcourir

Les middlewares couramment utilisés dans Laravel sont : 1. Le middleware global "$middleware" Lorsque toutes les requêtes doivent être traitées, il convient de le définir dans ce composant ; 2. Le middleware de routage "$routeMiddleware" 3, "$middlewareGroups". " groupe middleware.

Quels sont les middlewares couramment utilisés dans Laravel ?

L'environnement d'exploitation de ce tutoriel : système Windows 7, version Laravel 6, ordinateur Dell G3.

Trois middleware couramment utilisés dans Laravel

Attribut $middleware :

Cet attribut est appelé middleware global Pourquoi est-il appelé middleware global ? Parce que chaque fois que vous demandez, chaque middleware qu'il contient sera exécuté.

Attribut $routeMiddleware :

Cet attribut est appelé middleware de routage. Pourquoi est-il appelé middleware de routage ? Parce que le middleware défini dans cet attribut ne peut être référencé que lors de la définition des routes.
Supposons qu'il s'agisse du middleware de routage que nous avons défini :

protected $routeMiddleware = [
    ...
    'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
];

Et si nous voulons utiliser le middleware de classe IlluminateAuthMiddlewareAuthenticate::class ?
Route::get('hello/laravel-china','XXController@index')->middleware('auth');
Nous avons appelé la méthode middleware lors de la définition de l'itinéraire, et la valeur du paramètre est auth. comment accéder à ce temps de route, le middleware sera exécuté. J'ai compris! Très simple.

Attribut $middlewareGroups :

Cet attribut est appelé groupe middleware. Pourquoi est-il appelé groupe middleware ? Nous avons déjà parlé du middleware de routage. Pensez-vous qu'il est gênant d'ajouter un middleware de routage de cette manière ? Par exemple, si nous exécutons 10 middlewares, devons-nous en ajouter 10 lors de la définition de la route ? Avec le groupe middleware, il n’est pas nécessaire d’être aussi gênant. Jetons un coup d'œil à la manière dont le groupe middleware est défini.

protected $middlewareGroups = [
    'web' => [
        \App\Http\Middleware\EncryptCookies::class,
        ...
    ],
    'api' => [
        ...
    ],
];

D'accord, l'exemple ci-dessus consiste à définir le format du groupe middleware. Par exemple, si nous regardons la valeur clé web, elle correspond à un tableau composé de plusieurs middlewares. Une fois que nous l’avons défini, comment l’utiliser ?
Lorsque nous déclarons l'itinéraire, nous pouvons l'appeler ainsi.

Route::group(['middleware' => 'web'],function($route){
    $route->get('hello/world',function(){});
    $route->get('hello/php',function(){});
    // 这样在访问这个这些路由的时候,就会执行中间件组 web 所对应的中间件,方便多了,批量式的。
});

Résumé :

$middleware : Middleware global, lorsque vous devez effectuer un traitement sur toutes les requêtes, il convient de le définir dans cet attribut. (Par exemple, compter le nombre de requêtes)
$middlewareGroups : groupes middleware Par exemple, lorsque notre projet comporte des requêtes API et des requêtes Web, nous devons séparer les deux types de middleware de requête. À ce stade, nous avons besoin de notre groupe middleware. La.

$routeMiddleware : Middleware de routage Lorsque nous devons exécuter un middleware spécial pour certaines requêtes individuelles, il convient de le définir dans cet attribut.

Citation : https://laravel-china.org/topics/7392/laravel-trois-middleware-functions

Recommandations associées : Les cinq derniers didacticiels vidéo Laravel

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