JWT(JSON Web Token)是一種廣泛應用於身份驗證和信息交換的開放標準,它由三部分組成:頭部(Header)、載荷(Payload)和簽名(Signature)。 JWT 可用於在客戶端和服務器之間安全地傳遞用戶身份數據。
在PHP 中集成JWT 功能非常簡單,推薦使用Firebase JWT提供的官方PHP 庫。通過Composer 安裝該庫:
composer require firebase/php-jwt
以下是生成JWT 的標準方式,包含用戶的基本身份信息:
<?php
require_once 'vendor/autoload.php';
use Firebase\JWT\JWT;
// 定義密鑰
$key = "密鑰";
// 構建用戶數據載荷
$payload = array(
"iss" => "example.org",
"sub" => "user_id",
"name" => "John Doe"
);
// 生成 JWT
$jwt = JWT::encode($payload, $key);
echo $jwt;
?>
此代碼中,我們引入了Firebase JWT 庫,並使用JWT::encode()方法生成一個包含用戶信息的JWT 字符串。
在用戶請求時,需要驗證其提供的JWT 是否有效,以下是驗證的示例代碼:
<?php
require_once 'vendor/autoload.php';
use Firebase\JWT\JWT;
// 假設收到的 JWT
$jwt = "JWT";
// 密鑰(需與生成時一致)
$key = "密鑰";
try {
// 驗證並解碼 JWT
$decoded = JWT::decode($jwt, $key, array('HS256'));
// 輸出解碼後的用戶信息
echo "用戶ID: " . $decoded->sub . "<br>";
echo "用戶名: " . $decoded->name . "<br>";
} catch (Exception $e) {
echo '驗證失敗:' . $e->getMessage();
}
?>
該段代碼中,我們接收到客戶端傳遞的JWT,通過指定的密鑰進行簽名驗證,並使用JWT::decode()方法提取用戶信息。如果令牌無效,將拋出異常並輸出錯誤信息。
使用JWT 可以讓PHP 應用更安全地進行用戶身份認證和數據傳輸。借助Firebase JWT PHP 庫,開發者可以快速集成基於令牌的安全認證機制,實現輕量、高效的權限管理。