JWT(JSON Web Token)是一種用于身份驗證的開放標準,它允許通過在請求頭、請求參數或 cookie 中發送具有加密簽名的 JSON 數據,使得可以安全傳輸數據以及驗證發送方身份。
本文將介紹如何使用 PHP 生成 JWT。
首先,安裝 PHP 的 JWT 庫。可以使用 Composer 進行安裝,命令如下:
composer require firebase/php-jwt
安裝完成后,在 PHP 中引入 JWT 的編碼和解碼類:
require_once 'php-jwt/src/BeforeValidException.php'; require_once 'php-jwt/src/ExpiredException.php'; require_once 'php-jwt/src/SignatureInvalidException.php'; require_once 'php-jwt/src/JWT.php'; use \Firebase\JWT\JWT;
生成 Token 的方法:
$payload = array( "iss" =>"example.com", "aud" =>"example.com", "iat" =>1356999524, "exp" =>1357000000, "sub" =>"1234567890", ); $jwt = JWT::encode($payload, 'secretKey');
其中,$payload 是需要加密的數據,iss 表示簽發人,aud 表示接收人,iat 表示簽發時間,exp 表示過期時間,sub 表示主題;'secretKey' 是加密密鑰。
例如,為了保護用戶的敏感信息,可以在后端生成 JWT,并將其發送給瀏覽器保存。瀏覽器每次向服務器發送請求時,都需要在請求頭或請求參數中發送 JWT,服務器接收到 JWT 后,解密其中的數據并進行驗證,確定請求是否合法。
如下代碼演示了如何從 JWT 中解密數據:
$decoded = JWT::decode($jwt, 'secretKey', array('HS256')); print_r($decoded);
其中,$jwt 是要解密的 JWT,'secretKey' 是加密密鑰,'HS256' 是加密算法。
最后,需要注意的是,使用 JWT 進行身份驗證時,為了防止 JWT 被偽造或篡改,應該使用 HTTPS。