Heim  >  Artikel  >  PHP-Framework  >  Verwendung von JWT zur Authentifizierung in ThinkPHP6

Verwendung von JWT zur Authentifizierung in ThinkPHP6

王林
王林Original
2023-06-21 13:34:402059Durchsuche

Bei der heutigen groß angelegten Entwicklung von Internetanwendungen ist die Benutzersicherheitsauthentifizierung ein wesentlicher Bestandteil. Um die Benutzersicherheit zu gewährleisten, ist es üblich, zur Authentifizierung JSON Web Token (JWT) zu verwenden. Es kann Benutzerauthentifizierung und Berechtigungskontrolle einfach und effektiv implementieren. In diesem Artikel stellen wir vor, wie man JWT zur Authentifizierung in ThinkPHP6-Projekten verwendet.

Was ist ein JSON-Web-Token?

JSON Web Token (JWT) ist ein einfacher Authentifizierungsmechanismus. Sein Zweck besteht darin, Ansprüche sicher über das Netzwerk zu übertragen, und es kann als Mittel zur Authentifizierung und zum Austausch von Ansprüchen verwendet werden. JWT ist in HTTP-Anforderungsheadern oder URL-Parametern enthalten und kann daher einfach und bequem zwischen Server und Client übertragen werden.

JWT besteht aus drei Teilen: Header, Payload und Signatur. Der Header enthält Informationen, die den Signaturalgorithmus und -typ beschreiben, die Nutzlast enthält Deklarations- und Dateninformationen und die Signatur wird zur Überprüfung der Legitimität des JWT verwendet. In der JWT-Nutzlast können beliebige Daten gespeichert werden, und Sie können die benötigten Informationen anpassen.

Schritte zur Verwendung von JWT zur Authentifizierung in ThinkPHP6

Schritt 1: Installieren Sie die jwt-auth-Erweiterung

Zuerst müssen wir die jwt-auth-Erweiterung in das Projekt einführen. Fügen Sie die folgenden Abhängigkeiten in der Datei „composer.json“ hinzu:

"tymon/jwt-auth": "^1.0.0-rc.5"

Verwenden Sie das Composer-Update, um nach der Installation der Abhängigkeiten ein Update durchzuführen.

Schritt 2: Generieren Sie die Konfigurationsdatei

Führen Sie den folgenden Befehl aus, um die Konfigurationsdatei zu generieren:

php think jwt:publish

Nach dem Generieren der Konfigurationsdatei müssen wir die Konfiguration ändern, Parameter wie JWT-Schlüssel und Gültigkeitsdauer festlegen und die ändern /config/jwt.php-Datei.

Schritt 3: Authentifizierungs-Middleware schreiben

Der Authentifizierungsprozess von JWT muss auf der Serverseite abgeschlossen werden. Daher müssen wir eine Middleware AuthMiddleware erstellen, um das JWT zu authentifizieren, bevor die Anfrage den Controller erreicht.

Zuerst müssen wir die AuthMiddleware-Datei erstellen:

php think make:middleware AuthMiddleware

In der AuthMiddleware-Datei können wir den folgenden Code verwenden, um das JWT zu authentifizieren:

<?php
namespace appmiddleware;

use thinkacadeRequest;
use TymonJWTAuthExceptionsTokenExpiredException;
use TymonJWTAuthFacadesJWTAuth;
use thinkexceptionHttpException;

class AuthMiddleware
{
    public function handle($request, Closure $next)
    {
        //获取JWT token
        $token = JWTAuth::getToken();
        if (!$token) {
            throw new HttpException(401, 'Token not provided');
        }

        try {
            //验证JWT token
            $user = JWTAuth::authenticate($token);
            $request->user = $user;
        } catch (TokenExpiredException $exception) {
            throw new HttpException(401, 'Token expired');
        } catch (Exception $exception) {
            throw new HttpException(401, 'Token invalid');
        }

        return $next($request);
    }
}

In der Handle-Funktion erhalten wir zunächst das Token des JWT. Wenn das Token nicht vorhanden ist, wird eine 401-Ausnahme ausgelöst.

Wenn das Token vorhanden ist, verwenden wir JWTAuth::authenticate($token), um die Gültigkeit des Tokens zu überprüfen. Bei Erfolg werden die Benutzerinformationen an den Anforderungskontext gebunden.

Es ist zu beachten, dass im obigen Code alle ausgelösten Ausnahmen einen 401-Fehlercode zurückgeben.

Schritt 4: Middleware zur Authentifizierung verwenden

Verwenden Sie die AuthMiddleware-Middleware im Controller zur Authentifizierung, wie unten gezeigt:

<?php
namespace appcontroller;

use appmiddlewareAuthMiddleware;

class UserController extends Base
{
    protected $middleware = [
        AuthMiddleware::class
    ];

    public function index()
    {
        return json($this->request->user, 200);
    }
}

Im obigen Code haben wir dem Controller eine AuthMiddleware-Middleware hinzugefügt, sodass diese Middleware in der Anfrage automatisch angezeigt wird ausgeführt, bevor es den Controller erreicht.

Die Indexmethode des Controllers gibt die aktuell anfordernden Benutzerinformationen zurück. Wenn die JWT-Authentifizierung korrekt ist, werden die Benutzerinformationen im JSON-Format zurückgegeben.

Fazit

In diesem Artikel wird die Verwendung von JWT zur Authentifizierung im ThinkPHP6-Projekt vorgestellt. Wir haben den Implementierungsprozess der JWT-Authentifizierung im Detail vorgestellt, indem wir die JWT-Erweiterung installiert und Konfigurationsdateien generiert, Authentifizierungs-Middleware geschrieben und Middleware verwendet haben. Während dieses Prozesses erlangten wir ein tieferes Verständnis des JWT-bezogenen Wissens und lieferten wertvolle Erfahrungen für die zukünftige Internetentwicklung.

Das obige ist der detaillierte Inhalt vonVerwendung von JWT zur Authentifizierung in ThinkPHP6. 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