Maison  >  Article  >  développement back-end  >  Comment implémenter un middleware personnalisé dans CodeIgniter

Comment implémenter un middleware personnalisé dans CodeIgniter

王林
王林original
2023-07-29 10:53:11885parcourir

Comment implémenter un middleware personnalisé dans CodeIgniter

Citation :
Dans le développement Web moderne, le middleware joue un rôle essentiel dans les applications. Ils peuvent être utilisés pour exécuter une logique de traitement partagé avant ou après que la demande atteigne le contrôleur. CodeIgniter, en tant que framework PHP populaire, prend également en charge l'utilisation de middleware. Cet article explique comment implémenter un middleware personnalisé dans CodeIgniter et fournit un exemple de code simple.

Présentation du middleware :
Le middleware est un mécanisme qui effectue une action avant ou après que la requête atteigne le contrôleur. Ils peuvent être utilisés pour gérer la logique métier courante telle que l’authentification, la journalisation, le contrôle d’accès, etc. Dans CodeIgniter, le middleware peut être considéré comme un intercepteur, capable d'exécuter une logique supplémentaire avant ou après que la requête atteigne le contrôleur.

Les étapes pour implémenter un middleware personnalisé sont les suivantes :

Étape 1 : Créer une classe de middleware personnalisée
Créez une classe de middleware, nommez-la MyMiddleware et enregistrez-la dans le répertoire application/middlewares. Cette classe doit implémenter l'interface CodeIgniterMiddlewareMiddlewareInterface et implémenter la méthode handle(). La méthode handle() est la méthode principale du middleware et est utilisée pour gérer une logique spécifique.

<?php

namespace AppMiddlewares;

use CodeIgniterMiddlewareMiddlewareInterface;
use CodeIgniterHTTPRequestInterface;
use CodeIgniterHTTPResponseInterface;

class MyMiddleware implements MiddlewareInterface
{
    public function handle(RequestInterface $request, ResponseInterface $response, $arguments = null)
    {
        // 在请求到达控制器之前执行的代码
        // 可以在这里实现身份验证、日志记录、访问控制等逻辑

        // 继续处理请求
        $response = $this->next($request, $response);

        // 在请求到达控制器之后执行的代码
        // 可以在这里实现日志记录、响应处理等逻辑

        return $response;
    }
}

Étape 2 : Enregistrez le middleware
Ouvrez le fichier app/Config/Autoload.php et ajoutez la configuration suivante dans le tableau $psr4 pour charger automatiquement la classe middleware :

$psr4 = [
    'App'         => APPPATH,                // 默认
    'Config'      => APPPATH . 'Config',
    'Modules'     => ROOTPATH . 'modules',    // 可选
    'AppMiddlewares' => APPPATH . 'middlewares' // 添加这一行
];

Ouvrez ensuite le fichier app/Config/Events.php , et ajoutez le nom de classe du middleware dans la clé 'middleware' du tableau $filters, comme indiqué ci-dessous :

$filters = [
    'csrf'    => AppFiltersCSRF::class,
    'toolbar' => AppFiltersDebugToolbar::class,
    'honeypot' => AppFiltersHoneypot::class,
    'middleware' => AppMiddlewaresMyMiddleware::class // 添加这一行
];

Étape 3 : Utilisation du middleware
Pour utiliser le middleware dans un contrôleur, ajoutez-le simplement dans le __construct () du contrôleur. méthode, ajoutez le code suivant :

public function __construct()
{
    $this->middleware('MyMiddleware');
}

Le middleware sera exécuté dans l'ordre enregistré dans le tableau $filters. Vous pouvez également utiliser $this->middleware([]) dans la méthode __construct() du contrôleur pour ajouter plusieurs middlewares et définir leur ordre d'exécution.

Résumé :
Cet article explique comment implémenter un middleware personnalisé dans CodeIgniter. En créant une classe middleware personnalisée et en l'enregistrant auprès de l'application, nous pouvons exécuter une logique de traitement commune avant ou après que la requête atteigne le contrôleur. J'espère que cet article pourra vous aider à mieux comprendre et utiliser le middleware dans CodeIgniter.

Référence :

  • Documentation officielle de CodeIgniter : https://codeigniter.com/user_guide/incoming/middleware.html

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