Bagaimana untuk menggunakan PHP untuk pengesahan dan pengesahan JWT?
JWT (JSON Web Token) ialah standard terbuka untuk pengesahan dan kebenaran. Ia memindahkan data antara pelanggan dan pelayan dengan cara yang selamat dan boleh dipercayai dan membolehkan pelayan mengesahkan identiti pengguna yang menghantar permintaan. Artikel ini akan memperkenalkan cara menggunakan PHP untuk melaksanakan fungsi pengesahan dan pengesahan JWT.
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;
Melalui langkah di atas, kita boleh melaksanakan fungsi pengesahan dan pengesahan JWT dengan mudah menggunakan PHP. Sudah tentu, aplikasi praktikal memerlukan lebih banyak pertimbangan dan amalan keselamatan, dan pelarasan berdasarkan keperluan khusus. Saya harap artikel ini akan membantu anda memahami dan menggunakan JWT!
Atas ialah kandungan terperinci Bagaimana untuk menggunakan PHP untuk pengesahan dan pengesahan JWT?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!