Heim  >  Artikel  >  Backend-Entwicklung  >  Lassen Sie uns darüber sprechen, wie Sie JWT zur Identitätsauthentifizierung in PHP verwenden

Lassen Sie uns darüber sprechen, wie Sie JWT zur Identitätsauthentifizierung in PHP verwenden

PHPz
PHPzOriginal
2023-03-31 09:10:171177Durchsuche

JWT (JSON Web Token) ist ein offener Standard für Authentifizierung und Autorisierung. JWT besteht aus drei Teilen, nämlich Header, Payload und Signature. Bei Verwendung von JWT sendet der Server ein JWT an den Client, und der Client überträgt das JWT in nachfolgende Anfragen. Der Server bestätigt die Legitimität der Anfrage, indem er die Signatur und den Gültigkeitszeitraum des JWT überprüft.

PHP ist eine häufig verwendete Webentwicklungssprache, die viele JWT-Implementierungsmethoden bereitstellt. Im Folgenden wird die Verwendung von JWT zur Identitätsauthentifizierung in PHP vorgestellt.

  1. JWT installieren

Bevor Sie JWT verwenden, müssen Sie das JWT-Paket von PHP installieren. Es kann über den folgenden Befehl installiert werden:

composer require firebase/php-jwt

Nach Abschluss der Installation kann JWT in das Projekt eingeführt werden:

require_once('vendor/autoload.php');
use Firebase\JWT\JWT;
  1. JWT generieren

Bei der Identitätsauthentifizierung muss der Server ein JWT generieren und senden an den Kunden. Der Prozess der JWT-Generierung umfasst die Generierung von Header, Payload und Signatur.

// 将需要编码的数据放到一个关联数组中
$payload = array(
    "user_id" => 123456,
);

// 生成Header
$header = array(
    "alg" => "HS256",  // 采用的加密算法
    "typ" => "JWT"
);

// 生成JWT
$jwt = JWT::encode($payload, SECRET_KEY, 'HS256');
// SECRET_KEY为加密密钥

Nachdem Sie das JWT generiert haben, senden Sie es einfach an den Client.

  1. JWT überprüfen

Bei nachfolgenden Anfragen des Clients muss das JWT übertragen werden und die Legitimität der Anfrage muss durch Serverüberprüfung bestätigt werden. Der Prozess der Serverüberprüfung des JWT umfasst die Dekodierung der drei Teile Header, Payload und Signatur sowie die Überprüfung, ob die Signatur korrekt ist und ob der Gültigkeitszeitraum abgelaufen ist.

// 解码JWT
$jwt_decoded = JWT::decode($jwt, SECRET_KEY, array('HS256'));

// 验证Signature和有效期
$jwt_verified = JWT::verify($jwt, SECRET_KEY, array('HS256'));

Wenn sowohl die Signatur als auch der Gültigkeitszeitraum überprüft werden, kann die Anfragebearbeitung fortgesetzt werden. Wenn die Überprüfung fehlschlägt, muss die Anfrage abgelehnt werden.

  1. Umgang mit JWT-Ablauf

JWT hat einen Gültigkeitszeitraum und kann für mehrere Anfragen während des Gültigkeitszeitraums verwendet werden. Nach Ablauf muss der Client das JWT erneut abrufen und in die Anfrage einfügen. Bei der Verarbeitung eines JWT muss dessen Gültigkeitsdauer überprüft werden.

try {
    // 解码JWT
    $jwt_decoded = JWT::decode($jwt, SECRET_KEY, array('HS256'));
    // 检查有效期
    if ($jwt_decoded->exp < time()) {
        // JWT已过期
        throw new Exception('JWT已过期');
    }
} catch (Exception $e) {
    // JWT无效或已过期
    // 需要重新获取JWT或返回错误
}
  1. Zusammenfassung

Die Verwendung von JWT zur Authentifizierung ist eine einfache und effektive Methode. PHP bietet viele JWT-Implementierungen, was die Verwendung von JWT in PHP sehr einfach macht. Sie müssen jedoch auf die Gültigkeitsdauer des JWT und dessen korrekte Dekodierung und Überprüfung achten. Im Folgenden finden Sie die Schritte und Vorsichtsmaßnahmen für die Verwendung von PHP zur Implementierung der JWT-Authentifizierung.

Das obige ist der detaillierte Inhalt vonLassen Sie uns darüber sprechen, wie Sie JWT zur Identitätsauthentifizierung in PHP verwenden. 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