【发布时间】:2023-03-27 07:28:01
【问题描述】:
我正在尝试jwt,我在php 中做了一个非常简单的测试,然后转到jwt.io 调试器进行验证,并且标头和有效负载被正确解码,但它说签名未经验证。我查看了 this SO question 和 copied this article's code exactly 并无法使用任何密钥进行验证。我尝试更改设置密钥的字符串,选择和取消选择该框,但无法验证任何内容。这是我的代码:
$key = "mySecret";
$header = ["typ"=>"JWT","alg"=>"HS256"];
$header = base64_encode(json_encode($header));
$payload = ["valid"=>"true","isAdmin"=>"false"];
$payload = base64_encode(json_encode($payload));
$signature = hash_hmac('sha256','$header.$payload', $key, true);
$signature = base64_encode($signature);
$token = "$header.$payload.$signature";
echo $token;
我错过了哪一步?
编辑包括JWT
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ2YWxpZCI6InRydWUiLCJpc0FkbWluIjoiZmFsc2UifQ==.QzjPt33UOjEPdPLtyhvs4DYrAD2TnQgv8P0WuHXuj/c=
【问题讨论】:
-
你能发布一个示例令牌吗?
-
@pedrofb 已编辑以包含以上内容