Heim >Backend-Entwicklung >PHP-Problem >So implementieren Sie JWT mit PHP
JWT (JSON Web Tokens) ist ein offener, auf JSON basierender Standard zur sicheren Übertragung von Informationen zwischen zwei Anwendungen. Es besteht aus 3 Teilen: Header, Payload und Signatur. Der Header enthält Metadaten über das Token, die Payload ist der Teil, der die Informationen tatsächlich speichert, und die Signatur wird verwendet, um die Integrität der Nachricht zu überprüfen.
In diesem Artikel erfahren Sie, wie Sie JWT mit PHP implementieren.
JWT muss über Composer installiert werden. Wenn Sie Composer nicht installiert haben, können Sie es mit dem folgenden Befehl installieren:
curl -sS https://getcomposer.org/installer | php
Verschieben Sie dann die ausführbare Composer-Datei in das Verzeichnis /usr/local/bin:
sudo mv composer.phar /usr/local/bin/composer
Abhängigkeiten installieren:
composer require firebase/php-jwt
Zuerst müssen wir zum Erstellen die Funktion jwt_encode()
von PHP verwenden ein Token. Hier ist ein Beispiel: jwt_encode()
函数创建一个Token。下面是一个示例:
use \Firebase\JWT\JWT; $key = "my_secret_key"; //密钥 $payload = array( "iss" => "localhost", "aud" => "localhost", "iat" => time(), "exp" => time()+60*60 //有效期1小时 ); $jwt = JWT::encode($payload, $key);
在上述例子中,我们使用jwt_encode()
函数来创建一个JWT。$key
变量包含着JWT的密钥,$payload
变量包含了需要传输的信息和过期时间。过期时间可以使用PHP的time()
函数获取。最后,jwt_encode()
函数会返回一个JWT字符串。
我们需要使用PHP的jwt_decode()
函数来验证JWT。下面是一个示例:
use \Firebase\JWT\JWT; $key = "my_secret_key"; //密钥 $jwt = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJsb2NhbGhvc3QiLCJhdWQiOiJsb2NhbGhvc3QiLCJpYXQiOjE1NTg2NTQ2OTksImV4cCI6MTU1ODY5MTg5OSwiZW1haWwiOiJhZG1pbkBleGFtcGxlLmNvbSIsIm5hbWUiOiJhZG1pbiJ9.AmifgOPkE8lx4m4ovHShBc1sPLs9QnNgzuiBZfrjtLw"; try { $decoded = JWT::decode($jwt, $key, array('HS256')); print_r($decoded); } catch (Exception $e) { echo 'Invalid token: ' . $e->getMessage(); }
在上述例子中,我们使用了jwt_decode()
函数来验证JWT。如果验证通过,函数将返回一个包含了JWT的信息的对象。
签名用于验证JWT的完整性。我们需要使用一个密钥来对消息进行签名,这个密钥只有签名验证机制才知道。当接收者接收到消息时,他将使用相同的密钥对这个消息进行解密和验证。
JWT使用了一种叫做“哈希消息认证码”(HMAC)的技术来对JWT进行签名。这个技术需要将JWT的Header和Payload进行哈希计算,然后再与密钥进行组合。接下来是签名验证的例子:
use \Firebase\JWT\JWT; $key = "my_secret_key"; //密钥 $jwt = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJsb2NhbGhvc3QiLCJhdWQiOiJsb2NhbGhvc3QiLCJpYXQiOjE1NTg2NTQ2OTksImV4cCI6MTU1ODY5MTg5OSwiZW1haWwiOiJhZG1pbkBleGFtcGxlLmNvbSIsIm5hbWUiOiJhZG1pbiJ9.AmifgOPkE8lx4m4ovHShBc1sPLs9QnNgzuiBZfrjtLw"; try { $decoded = JWT::decode($jwt, $key, array('HS256')); $decoded_array = (array) $decoded; $signature_valid = JWT::verify("$jwt->header.$jwt->payload", $jwt->signature, $key); if ($signature_valid) { echo "Valid signature"; } else { echo "Invalid signature"; } } catch (Exception $e) { echo 'Invalid token: ' . $e->getMessage(); }
在上述例子中,我们使用了verify()
函数来验证签名。这个函数将会返回一个布尔值,如果结果为true,表示签名是有效的。
总结
在这篇文章中,我们简要地介绍了如何使用PHP实现JWT。首先,我们需要安装JWT的依赖库,然后使用jwt_encode()
函数创建Token,使用jwt_decode()
函数验证Token,最后使用verify()
rrreee
jwt_encode()
, um ein JWT zu erstellen. Die Variable $key
enthält den JWT-Schlüssel und die Variable $payload
enthält die zu übertragenden Informationen und die Ablaufzeit. Die Ablaufzeit kann mit der PHP-Funktion time()
ermittelt werden. Schließlich gibt die Funktion jwt_encode()
einen JWT-String zurück. #🎜🎜#jwt_decode()
verwenden, um das JWT zu überprüfen . Hier ist ein Beispiel: #🎜🎜#rrreee#🎜🎜#Im obigen Beispiel haben wir die Funktion jwt_decode()
verwendet, um das JWT zu überprüfen. Wenn die Überprüfung erfolgreich ist, gibt die Funktion ein Objekt zurück, das die JWT-Informationen enthält. #🎜🎜#verify()
verwendet, um die Signatur zu überprüfen. Diese Funktion gibt einen booleschen Wert zurück. Wenn das Ergebnis wahr ist, bedeutet dies, dass die Signatur gültig ist. #🎜🎜##🎜🎜#Zusammenfassung#🎜🎜##🎜🎜#In diesem Artikel haben wir kurz vorgestellt, wie man JWT mit PHP implementiert. Zuerst müssen wir die JWT-abhängige Bibliothek installieren, dann die Funktion jwt_encode()
verwenden, um das Token zu erstellen, die Funktion jwt_decode()
verwenden, um das Token zu überprüfen, und schließlich Verwenden Sie verify()Funktion zur Überprüfung der Signatur. Diese Funktionen können über die JWT-Bibliothek von Firebase implementiert werden. #🎜🎜#
Das obige ist der detaillierte Inhalt vonSo implementieren Sie JWT mit PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!