Wie verwende ich PHP für die JWT-Authentifizierung und -Authentifizierung?
JWT (JSON Web Token) ist ein offener Standard für Authentifizierung und Autorisierung. Es überträgt Daten auf sichere und zuverlässige Weise zwischen Client und Server und ermöglicht es dem Server, die Identität des Benutzers zu überprüfen, der die Anfrage sendet. In diesem Artikel wird erläutert, wie Sie mit PHP die JWT-Authentifizierung und Authentifizierungsfunktionen implementieren.
composer require firebase/php-jwt lcobucci/jwt
<?php use FirebaseJWTJWT; use LcobucciJWTBuilder; use LcobucciJWTSignerHmacSha256; // 用户登录成功后,生成JWT function generateJWT($userId, $secretKey) { $time = time(); $token = (new Builder()) ->issuedBy('example.com') // 发行者 ->permittedFor('example.com') // 接受者 ->identifiedBy('1', true) // 标识符 ->issuedAt($time) // 发行时间 ->expiresAt($time + 3600) // 过期时间 ->withClaim('userId', $userId) // 自定义声明 ->getToken(new Sha256(), new Key($secretKey)); return $token; } $jwt = generateJWT(1, 'your-secret-key'); echo $jwt;
<?php use FirebaseJWTJWT; // 验证并解析JWT function verifyJWT($jwt, $secretKey) { try { $decoded = JWT::decode($jwt, $secretKey, ['HS256']); return $decoded; } catch (Exception $e) { return null; } } $jwt = $_SERVER['HTTP_AUTHORIZATION']; $decoded = verifyJWT($jwt, 'your-secret-key'); if ($decoded) { $userId = $decoded->userId; echo "用户ID:$userId"; } else { echo "无效的JWT"; }
<?php use FirebaseJWTJWT; use LcobucciJWTBuilder; use LcobucciJWTSignerHmacSha256; // 刷新JWT function refreshJWT($jwt, $secretKey) { $current = time(); $decoded = JWT::decode($jwt, $secretKey, ['HS256']); if ($decoded->exp - $current > 1800) { // 如果剩余有效期超过30分钟,则不刷新JWT return $jwt; } $newToken = (new Builder()) ->issuedBy($decoded->iss) ->permittedFor($decoded->aud) ->identifiedBy($decoded->jti, true) ->issuedAt($current) ->expiresAt($current + 3600) ->withClaim('userId', $decoded->userId) ->getToken(new Sha256(), new Key($secretKey)); return $newToken; } $jwt = $_SERVER['HTTP_AUTHORIZATION']; $refreshedJWT = refreshJWT($jwt, 'your-secret-key'); echo $refreshedJWT;
Durch die obigen Schritte können wir JWT-Authentifizierung und Authentifizierungsfunktionen einfach mit PHP implementieren. Natürlich erfordern praktische Anwendungen mehr Sicherheitsüberlegungen und -praktiken sowie Anpassungen basierend auf spezifischen Anforderungen. Ich hoffe, dieser Artikel hilft Ihnen, JWT zu verstehen und zu verwenden!
Das obige ist der detaillierte Inhalt vonWie verwende ich PHP für die JWT-Authentifizierung und -Authentifizierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!