ad組成的字符串進(jìn)行簽名后得到的字符串。我們可以通過(guò)將Header和Payload進(jìn)行Base64編碼后再附加上一個(gè)密鑰進(jìn)行簽名來(lái)生成Signature。
對(duì)于密鑰,我們可以從配置文件中讀取,也可以手動(dòng)設(shè)置。
“`
$secret_key = ‘your_secret_key’;
$header_encoded = base64_encode(json_encode($header));
$payload_encoded = base64_encode(json_encode($payload));
$signature = hash_hmac(‘sha256’, $header_encoded . ‘.’ . $payload_encoded, $secret_key, true);
$signature_encoded = base64_encode($signature);
“`
4.創(chuàng)建Token
將Header、Payload和Signature拼接成一個(gè)字符串,即可成為一個(gè)完整的Token。
“`
$token = $header_encoded . ‘.’ . $payload_encoded . ‘.’ . $signature_encoded;
“`
Phptoken的使用
在接口請(qǐng)求時(shí),客戶端需要在請(qǐng)求頭中傳遞Token,服務(wù)端在接收到Token后需要驗(yàn)證Token的簽名和有效期等信息。
我們可以通過(guò)以下代碼來(lái)解析Token:
“`
$token = ‘your_token’;
$token_parts = explode(‘.’, $token);
$header = json_decode(base64_decode($token_parts[0]), true);
$payload = json_decode(base64_decode($token_parts[1]), true);
$signature = base64_decode($token_parts[2]);
$secret_key = ‘your_secret_key’;
$computed_signature = hAPPash_hmac(‘sha256’, $token_parts[0] . ‘.’ . $token_parts[1], $secret_key, true);
if (hash_equals($signature, $computed_signature)) {
// 驗(yàn)證通過(guò)
} else {
// 驗(yàn)證失敗
}
“`
Phptoken是一種很好用的Token生成方法,它基于JWT標(biāo)準(zhǔn)并結(jié)合了PHP的特點(diǎn),可以輕松地完成Token的生成和驗(yàn)證,并提高了程序的安全性。