Heim >Backend-Entwicklung >PHP-Tutorial >So implementieren Sie benutzerdefinierte Middleware in CodeIgniter

So implementieren Sie benutzerdefinierte Middleware in CodeIgniter

王林
王林Original
2023-07-29 10:53:11901Durchsuche

So implementieren Sie benutzerdefinierte Middleware in CodeIgniter

Zitat:
In der modernen Webentwicklung spielt Middleware eine wichtige Rolle in Anwendungen. Sie können verwendet werden, um eine gemeinsame Verarbeitungslogik auszuführen, bevor oder nachdem die Anforderung den Controller erreicht. CodeIgniter unterstützt als beliebtes PHP-Framework auch den Einsatz von Middleware. In diesem Artikel wird die Implementierung benutzerdefinierter Middleware in CodeIgniter vorgestellt und ein einfaches Codebeispiel bereitgestellt.

Middleware-Übersicht:
Middleware ist ein Mechanismus, der eine Aktion ausführt, bevor oder nachdem die Anforderung den Controller erreicht. Sie können zur Handhabung allgemeiner Geschäftslogik wie Authentifizierung, Protokollierung, Zugriffskontrolle usw. verwendet werden. In CodeIgniter kann man sich Middleware als Abfangjäger vorstellen, der in der Lage ist, zusätzliche Logik auszuführen, bevor oder nachdem die Anforderung den Controller erreicht.

Die Schritte zum Implementieren benutzerdefinierter Middleware sind wie folgt:

Schritt 1: Erstellen Sie eine benutzerdefinierte Middleware-Klasse.
Erstellen Sie eine Middleware-Klasse, nennen Sie sie MyMiddleware und speichern Sie sie im Verzeichnis application/middlewares. Diese Klasse muss die Schnittstelle CodeIgniterMiddlewareMiddlewareInterface und die Methode handle() implementieren. Die Methode handle() ist die Kernmethode der Middleware und wird zur Verarbeitung spezifischer Logik verwendet.

<?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;
    }
}

Schritt 2: Middleware registrieren
Öffnen Sie die Datei app/Config/Autoload.php und fügen Sie die folgende Konfiguration im $psr4-Array hinzu, um die Middleware-Klasse automatisch zu laden:

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

Öffnen Sie dann die Datei app/Config/Events.php , und fügen Sie den Klassennamen der Middleware im Schlüssel „middleware“ des $filters-Arrays hinzu, wie unten gezeigt:

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

Schritt 3: Middleware verwenden
Um Middleware in einem Controller zu verwenden, fügen Sie sie einfach in __construct() des Controllers hinzu. -Methode hinzufügen, fügen Sie den folgenden Code hinzu:

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

Middleware wird in der im $filters-Array registrierten Reihenfolge ausgeführt. Sie können auch $this->middleware([]) in der __construct()-Methode des Controllers verwenden, um mehrere Middlewares hinzuzufügen und deren Ausführungsreihenfolge zu definieren.

Zusammenfassung:
Dieser Artikel stellt vor, wie man benutzerdefinierte Middleware in CodeIgniter implementiert. Indem wir eine benutzerdefinierte Middleware-Klasse erstellen und diese bei der Anwendung registrieren, können wir eine allgemeine Verarbeitungslogik ausführen, bevor oder nachdem die Anforderung den Controller erreicht. Ich hoffe, dieser Artikel kann Ihnen helfen, Middleware in CodeIgniter besser zu verstehen und zu verwenden.

Referenz:

  • Offizielle CodeIgniter-Dokumentation: https://codeigniter.com/user_guide/incoming/middleware.html

Das obige ist der detaillierte Inhalt vonSo implementieren Sie benutzerdefinierte Middleware in CodeIgniter. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn