JWT (JSON Web Token) ist ein offener Standard (RFC 7519), mit dem Token in Netzwerkanwendungen sicher übertragen werden. Es wird in der Benutzer -Identitäts -Authentifizierung und der Berechtigungsverwaltung häufig verwendet. Als beliebtes PHP -Framework bietet ThinkPhp6 eine umfangreiche Komponentenunterstützung, die es Entwicklern ermöglicht, JWT -Zertifizierungsfunktionen zu integrieren. In diesem Artikel wird nach und nach erklären, wie die JWT -Authentifizierung in ThinkPhp6 implementiert wird.
Zunächst müssen Sie JWT-bezogene Erweiterungsbibliotheken über einen Komponisten installieren. Geben Sie das Projektstammverzeichnis ein und führen Sie den folgenden Befehl im Terminal aus:
<span class="fun">Der Komponist benötigt Firebase/PHP-JWT</span>
Erstellen oder ändern Sie die JWT.PHP -Datei im Konfigurationsverzeichnis von ThinkPhp6 und konfigurieren Sie die folgenden Inhalte:
return [
'secret' => 'your_secret_key',
'algorithm' => 'HS256',
];
Unter ihnen ist Geheimnis der Schlüssel, der für die Signatur verwendet wird. Es wird empfohlen, als zufällige Zeichenfolge festzulegen, und Algorithmus ist ein Verschlüsselungsalgorithmus mit HS256, HS384 oder HS512 Optional.
Die Authentifizierung Middleware wird verwendet, um das JWT -Token zu überprüfen, bevor die Anforderung den Controller erreicht. Verwenden Sie den Befehl, um schnell Middleware zu generieren:
<span class="fun">PHP Think Make: Middleware JWTMiddleware</span>
Dieser Befehl generiert eine JWTMiddleware -Klassendatei im App/Middleware -Verzeichnis.
Öffnen Sie die JWTMiddleware -Datei und ergänzen Sie den Authentifizierungscode:
use think\facade\Request;
use think\facade\Response;
use Firebase\JWT\JWT;
class JwtMiddleware
{
public function handle($request, \Closure $next)
{
$token = Request::header('Authorization');
if (empty($token)) {
return Response::create('Unauthorized', '401');
}
try {
JWT::decode($token, config('jwt.secret'), [config('jwt.algorithm')]);
} catch (\Exception $e) {
return Response::create('Invalid token', '401');
}
return $next($request);
}
}
Rufen Sie im Code zunächst das JWT -Token aus dem Anforderungsheader an, und wenn es leer ist, gibt es 401 Fehler zurück. Überprüfen Sie dann die Legitimität des Tokens, und wenn es fehlschlägt, gibt es auch 401 zurück; Nachdem die Überprüfung verabschiedet wurde, wird der nachfolgende Antrag weiterhin ausgeführt.
Fügen Sie in Route/Route.php Middleware in die Route hinzu, die eine Authentifizierung benötigt:
\think\Route::group(function () {
// Routen, die Authentifizierung erfordern
})->middleware(\app\middleware\JwtMiddleware::class);
Sie können auch Middleware in Controller -Klassenanmerkungen deklarieren:
namespace app\controller;
use think\annotation\route\Post;
use app\middleware\JwtMiddleware;
/**
* @route("auth")
* @middleware(JwtMiddleware::class)
*/
class AuthController
{
// Controller -Code
}
Auf diese Weise passieren alle Routen im Controller automatisch die JWT -Authentifizierung Middleware.
Verwenden Sie nach Abschluss der Konfiguration Postman- oder andere Schnittstellen -Test -Tools, um eine Anforderung mit einem gültigen JWT -Token zu senden, um zu überprüfen, ob die Schnittstelle normal reagiert. Bei einem ungültigen oder fehlenden Token sollte ein nicht autorisierter Fehler 401 zurückgegeben werden.
In diesem Artikel wird beschrieben, wie die JWT -Authentifizierung in ThinkPhp6 -Framework integriert wird. Es deckt den vollständigen Prozess der erweiterten Installation, Konfiguration, der Erstellung und Anwendung von Authentifizierungen sowie der Prüfung von Schnittstellen ab. Durch die Implementierung der JWT -Authentifizierung kann die Sicherheit der Anwendung verbessert und eine effiziente Verwaltung der Benutzeridentität erreicht werden.