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 thinkacadeRequest; 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!