php qu'est-ce qu'un middleware

(*-*)浩
Libérer: 2023-02-24 11:38:01
original
4525 Les gens l'ont consulté

Comme son nom l'indique, le middleware intercepte et traite les données de demande, vérifie les données et détermine s'il convient d'autoriser l'entrée au prochain middleware après un traitement logique entre les demandes et les réponses.

php qu'est-ce qu'un middleware

Le middleware est divisé en middleware préfixe et middleware post-fixe. Peut être utilisé pour l'authentification des autorisations, la journalisation, etc.

Le middleware fournit un mécanisme pratique pour filtrer les requêtes HTTP entrant dans l'application. (Apprentissage recommandé : Programmation PHP du débutant à compétent)

Par exemple, Laravel dispose d'un middleware intégré pour vérifier l'authentification des utilisateurs. Si l'utilisateur n'est pas authentifié, le middleware redirigera l'utilisateur vers l'interface de connexion. Cependant, si l'utilisateur est authentifié, le middleware autorisera la requête plus loin dans l'application.

Bien sûr, en plus de l'authentification d'identité, vous pouvez également écrire un middleware supplémentaire pour effectuer diverses tâches.

Par exemple : le middleware CORS peut être chargé d'ajouter des informations d'en-tête appropriées à toutes les réponses quittant l'application ; le middleware de journalisation peut enregistrer toutes les demandes entrant dans l'application.

Exemple

<?php
// 框架核心应用层
$application = function($name) {
    echo "this is a {$name} application\n";
};
 
// 前置校验中间件
$auth = function($handler) {
    return function($name) use ($handler) {
        echo "{$name} need a auth middleware\n";
        return $handler($name);
    };
};
 
// 前置过滤中间件
$filter = function($handler) {
    return function($name) use ($handler) {
        echo "{$name} need a filter middleware\n";
        return $handler($name);
    };
};
 
// 后置日志中间件
$log = function($handler) {
    return function($name) use ($handler) {
        $return = $handler($name);
        echo "{$name} need a log middleware\n";
        return $return;
    };
};
 
// 中间件栈
$stack = [];
 
// 打包
function pack_middleware($handler, $stack)
{
    foreach (array_reverse($stack) as $key => $middleware) 
    {
        $handler = $middleware($handler);
    }
    return $handler;
}
 
// 注册中间件
// 这里用的都是全局中间件,实际应用时还可以为指定路由注册局部中间件
$stack[&#39;log&#39;] = $log;
$stack[&#39;filter&#39;] = $filter;
$stack[&#39;auth&#39;] = $auth;
 
$run = pack_middleware($application, $stack);
$run(&#39;Laravle&#39;);
Copier après la connexion

Sortie :

Laravle need a filter middleware
Laravle need a auth middleware
this is a Laravle application
Laravle need a log middleware
Copier après la connexion

Packager

La séquence d'exécution du middleware est donnée par La fonction packaging (pack_middleware) détermine que la fermeture renvoyée ici est en réalité équivalente à :

$run = $log($filter($auth($application)));
$run(&#39;Laravle&#39;);
Copier après la connexion

Spécifications d'écriture

Le middleware doit répondre à certaines spécifications : toujours renvoyer Une fermeture, la les mêmes paramètres sont toujours passés dans la fermeture (déterminés par la logique principale), et la fermeture renvoie toujours le résultat de l'exécution du gestionnaire

Si la logique middleware renvoie le handle return $ S'il est terminé avant le handler( $name), c'est un pré-middleware, sinon c'est un post-middleware.

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!

Étiquettes associées:
php
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!