JWT (JSON Web Token) ist ein Verschlüsselungs -Token, mit dem sichere Informationen zwischen Netzwerkanwendungen übergeben. Es überträgt die Informationen zwischen dem Client und dem Server in Form eines JSON -Objekts sicher.
JWT besteht aus drei Teilen: Header, Nutzlast und Signatur.
Header: Deklariert den Typ- und Verschlüsselungsalgorithmus des Tokens. Beispiel:
{
"alg": "HS256",
"typ": "JWT"
}
Nutzlast: Enthält einige Standarddeklarationen und benutzerdefinierte Deklarationen. Beispiel:
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
Signatur: Generieren Sie die Basis64 -Codierung des Headers und die Nutzlast mit einem Schlüssel.
Um die JWT -Überprüfung in ThinkPhp6 zu verwenden, müssen Sie zuerst die JWT -Erweiterung installieren. Fügen Sie in der Datei composer.json im Projektverzeichnis die folgenden Abhängigkeiten hinzu:
"require": {
"firebase/php-jwt": "5.0.0"
}
Führen Sie dann den Befehl Composer Install aus, um die JWT -Erweiterung zu installieren.
Nachdem wir uns erfolgreich angemeldet haben, können wir ein Token generieren und an den Kunden zurückgeben. Beispielcode:
use think\jwt\JWT;
public function login() {
// Logik -Logik
$payload = [
'sub' => $user->id,
'name' => $user->username,
'iat' => time()
];
$token = JWT::encode($payload, $key);
return json(['token' => $token]);
}
Wo immer Sie die Identität des Benutzers überprüfen müssen, können Sie JWT verwenden, um die Gültigkeit des Tokens zu überprüfen. Beispielcode:
use think\jwt\JWT;
public function getUser(Request $request) {
$token = $request->header('Authorization');
try {
$payload = JWT::decode($token, $key, ['HS256']);
$user = User::get($payload->sub); // Holen Sie sich Benutzerinformationen aus der Datenbank
return json($user);
} catch (Exception $e) {
return json(['error' => 'Token is invalid']);
}
}
JWT ist eine bequeme und sichere Authentifizierungsmethode, und es ist auch sehr einfach, die JWT -Authentifizierung in ThinkPhp6 zu implementieren. Durch das Generieren und Überprüfen von Token kann die Identität des Benutzers effektiv geschützt werden. Gleichzeitig kann der Schutz des geheimen Schlüssels und der angemessene Festlegung der Ablaufzeit des Tokens die Systemsicherheit weiter verbessern.