Heim  >  Artikel  >  PHP-Framework  >  Implementierungsprozess der Laravel-Middleware

Implementierungsprozess der Laravel-Middleware

WBOY
WBOYOriginal
2023-05-20 21:12:35803Durchsuche

Mit der kontinuierlichen Entwicklung des Internets und von Webanwendungen entstehen auch Webentwicklungs-Frameworks. Unter ihnen ist das Laravel-Framework weithin anerkannt und verwendet. Das Laravel-Framework bietet Entwicklern die wichtige Funktion der Middleware, mit der Anforderungen in Anwendungen gefiltert und verarbeitet werden, wodurch die Entwicklungseffizienz und -sicherheit effektiv verbessert wird. In diesem Artikel wird der Implementierungsprozess der Laravel-Middleware ausführlich vorgestellt, um Entwicklern zu helfen, diese Funktion besser zu verstehen und anzuwenden.

1. Was ist Middleware? Im Laravel-Framework bezieht sich Middleware (Middleware) auf einen Mechanismus zum Filtern und Verarbeiten von HTTP-Anfragen, die in die Anwendung eingehen, ähnlich wie gängige Interceptoren und Filter im Codekonzept. Unter normalen Umständen übernimmt Middleware einige allgemeine Verarbeitungsaufgaben, wie zum Beispiel:

ist für die Authentifizierung von Anfragen verantwortlich;
  • behält den Sitzungsstatus bei;
  • basiert auf den Header-Informationen request , den entsprechenden Antwortheader festlegen usw.
  • Das Laravel-Framework bietet einige integrierte Middleware, z. B. Authentifizierungs-Middleware, CSRF-Middleware, Strombegrenzungs-Middleware usw. Entwickler können auch benutzerdefinierte Middleware schreiben, um die spezifischen Anforderungen der Anwendung zu erfüllen.
  • 2. Implementierungsprinzip der Middleware

Der Middleware-Mechanismus des Laravel-Frameworks basiert auf dem PSR-15-Standard. In Laravel besteht Middleware im Allgemeinen aus zwei Teilen: Middleware-Klasse und Middleware-Aufruf. Als nächstes stellen wir diese beiden Teile jeweils im Detail vor.

Middleware-Klasse

    Die Middleware-Klasse ist der Kernbestandteil der Implementierung der Middleware-Logik. Sie muss im Allgemeinen die Prozessmethode in der in PSR-15 definierten MiddlewareInterface-Schnittstelle implementieren. Diese Methode akzeptiert zwei Parameter, das aktuelle Anforderungsobjekt und eine Rückruffunktion, die für die Weitergabe der Anforderung an die nächste Middleware oder Anwendung verantwortlich ist.
  1. Die Verarbeitungslogik der Middleware ist im Allgemeinen in der Prozessmethode implementiert, die Anforderungsdaten lesen, Antwortdaten ändern und andere spezifische Vorgänge ausführen kann. Der Beispielcode lautet wie folgt:
<?php

namespace AppHttpMiddleware;

use Closure;
use IlluminateHttpRequest;

class MyMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  IlluminateHttpRequest  $request
     * @param  Closure  $next
     * @return mixed
     */
    public function handle(Request $request, Closure $next)
    {
        // 判断当前请求是否携带token
        if (!$request->header('Authorization')) {
            return response()->json(['message' => 'Unauthorized'], 401);
        }

        // 执行下一个中间件或应用程序
        return $next($request);
    }
}

Im obigen Code definieren wir eine Middleware-Klasse mit dem Namen MyMiddleware, die bestimmt, ob die Anfrage die Authorization-Header-Informationen enthält. Wenn sie diese nicht enthält, gibt sie eine nicht autorisierte Antwort zurück , führt es die nächste Middleware oder Anwendung aus.

Middleware-Aufruf

    Die Art und Weise, Middleware in das Laravel-Framework einzuführen, ist sehr flexibel. Entwickler können unterschiedliche Middleware für unterschiedliche Anforderungspfade, Anforderungsmethoden, Anforderungstypen und andere Bedingungen einführen oder über die Middleware-Gruppe stapelweise einführen. Hier sind mehrere gängige Möglichkeiten, es einzuführen:
Globale Middleware einführen: Fügen Sie die Middleware zum Attribut $middleware der Datei app/Http/Kernel.php hinzu, und sie wird auf alle Anfragen angewendet.

// app/Http/Kernel.php

protected $middleware = [
    AppHttpMiddlewareMyMiddleware::class,
];
  • Einführung von Routing-Middleware: Beim Definieren von Routen in der Datei „routes/web.php“ können Sie die angegebene Middleware über die Middleware-Methode einführen.
// routes/web.php

use AppHttpMiddlewareMyMiddleware;

Route::get('/user', function () {
    //
})->middleware(MyMiddleware::class);
    Darüber hinaus können über Middleware-Gruppen auch mehrere Middleware stapelweise eingeführt werden. Auf dieser Grundlage kann Middleware flexibel eingesetzt werden, um unterschiedliche Funktionen in verschiedenen Szenarien zu erreichen.
  • 3. Middleware-Ausführungsprozess

Wenn eine Anfrage in die Laravel-Anwendung eingeht, ruft das Laravel-Framework diese Middleware-Klassen in der Reihenfolge auf, in der die Middleware eingeführt wird, und führt dann ihre Prozessmethode aus. Aufgrund der Zusammensetzung der Middleware-Kette ist die Bedienung vor oder nach der Verarbeitung der Anfrage einfach.

Der Middleware-Planungsprozess des Laravel-Frameworks ist wie folgt:

Die Anforderung geht in die Anwendung ein, wird von der HttpKernel-Middleware verarbeitet und das Anforderungsobjekt (IlluminateHttpRequest-Instanz) wird erstellt.

Rufen Sie die globale Middleware auf. Wenn die erste Middleware ausgeführt werden muss, wird die Prozessmethode der Middleware ausgeführt.
  1. Dann wird die Routing-Middleware aufgerufen. Wenn die erste Middleware ausgeführt werden muss, wird die Prozessmethode der Middleware ausgeführt.
  2. Die Anforderung erreicht schließlich die Routing-Abschlussfunktion oder die Controller-Methode, um die spezifische Geschäftslogikverarbeitung abzuschließen.
  3. Kehren Sie über die Prozessmethode der Routing-Middleware zur HttpKernel-Middleware zurück und rufen Sie die Terminate-Methode der Routing-Middleware und der globalen Middleware in umgekehrter Reihenfolge auf.
  4. Erzeugt schließlich eine HTTP-Antwort und gibt sie an den Browser zurück.
  5. Middleware des Laravel-Frameworks ist eine sehr nützliche Funktion, um bestimmten Code einfach auszuführen oder die Anfrage während der Anfragebearbeitung zu instrumentieren und so der Anwendung Flexibilität und Sicherheit zu verleihen. Durch die Einführung und Implementierung der Laravel-Middleware können Entwickler die Rolle der Middleware besser verstehen und anwenden.

Das obige ist der detaillierte Inhalt vonImplementierungsprozess der Laravel-Middleware. 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