Php 为什么我会犯这个错误;未捕获异常';Firebase\JWT\SignatureInvalidException';带有消息';签名验证失败'&引用;

Php 为什么我会犯这个错误;未捕获异常';Firebase\JWT\SignatureInvalidException';带有消息';签名验证失败'&引用;,php,firebase,jwt,jwt-auth,Php,Firebase,Jwt,Jwt Auth,我得到一个令牌,我需要解码它。使用JWT::decode($JWT,$key,array('HS256'))总是会生成错误。(签名检查错误) 我找到了一些帖子,但它们并没有解决我的问题(例如,还有其他帖子,但没有有效的解决方案)。我想我错过了一些非常基本的东西。我也尝试了URL64解码/编码…等等。。用我的令牌,但我仍然无法正确解码。当我使用JWT.io时,令牌被解密没有任何问题。 我在下面的代码中遗漏了什么 <?php require __DIR__ . '/vendor/autoloa

我得到一个令牌,我需要解码它。使用JWT::decode($JWT,$key,array('HS256'))总是会生成错误。(签名检查错误)


我找到了一些帖子,但它们并没有解决我的问题(例如,还有其他帖子,但没有有效的解决方案)。我想我错过了一些非常基本的东西。我也尝试了URL64解码/编码…等等。。用我的令牌,但我仍然无法正确解码。当我使用JWT.io时,令牌被解密没有任何问题。 我在下面的代码中遗漏了什么

<?php
require __DIR__ . '/vendor/autoload.php';

use \Firebase\JWT\JWT;
$jwt = "eyJraWQiOiJUUyIsImFsZyI6IkhTMjU2In0.eyJzdWIiOiJsaW9uZWwiLCJvcCI6ImF1dGgiLCJsdmwiOjEsImRzaWQiOiJhZTk0ZjdiOC03YzliLTRlYWUtOTZhNy04ZjAxZWEwNTQxOTEiLCJpc3MiOiJUUyIsInBpZCI6ImxvZ2luIiwicGFyYW1zIjp7fSwic2lkIjoiODFhNmVmNWYtZjhhZi00ODk4LWIyZmUtYWM1OTBhZDQyYWEzIiwiYXVkIjoid2ViYXBwIiwicHZpZCI6InN0YXRpYyIsImV4cCI6MTU3MzAzNjUxMCwiaWF0IjoxNTczMDM0NzEwLCJqdGkiOiIzMmM4Y2YxZi0wYTE3LTQ3ZTUtOWVhNi05ZTRlZDlhZTQ4NTAiLCJkaWQiOiIxZTdjMDQwZC01ZGM5LTRlMzktYjBjYy0wMjUwZTI4ZjY0MDQifQ.KU9dpKENm1_YmBngCEnXP2XiGpCkA7sf5pmojB7TzKM";
$key = "secret";


print_r("JWT\n\n");
print_r($jwt);

$decoded = JWT::decode($jwt, $key, array('HS256'));
echo "DECODED\n";
print_r($decoded);


?>

代码生成此错误:

PHP致命错误:未捕获异常“Firebase\JWT\SignatureInvalidException”,在/var/www/html/vendor/Firebase/PHP JWT/src/JWT.PHP:112中显示消息“签名验证失败”


Thx

“令牌解密没有任何问题”-令牌没有加密,只是base64url编码。但是当我尝试上面发布的带有秘密“secret”的令牌时,jwt.io无法验证它。确保您拥有正确的密码,并查看是否可以在jwt.io上进行验证(通过将令牌粘贴到“验证签名”下右栏的字段中)。这不是我应该做的吗?这是结果的屏幕截图是的,但请查看屏幕截图中的签名(左栏中的蓝色字符)。这与您问题中的帖子不一样。因此,您上面代码示例中的令牌和密码不匹配。请使用屏幕截图中显示的令牌,并尝试在您的代码中验证它,这应该有效。它现在有效吗?不,我重新检查了所有内容以确定。我有这个令牌(一个新的令牌):Eyjrawqioijuuyismfszyi6ikhtmju2in0.Eyjzdwiijaw9uzwwiijvci6imf1dggiljzmwiojesimrzawqioi2ng2ng2n2lqwwzy2n2lqwwy2n2n2lqwwy2n2nzy2nzy2nzzy2nzzyzyzyzyzy2nzy2nzyzyzzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzy6mzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzzyzyzzzzyzyzyzzyzyzyzyzyzzyzyzyzyKIOIJMNDUYYJU1OS1JZJG1TRKNJYTYMQ4NY1KOGM1NZY3MUZOGEILCJKAWQIOIXTZTMDQWZC01ZGM5LTRLMZKTYJBJYY0WMJUWZTI4ZJY0MDQIFQ.NPUF1T30ISBPPVGFD9UAYRRLQUNGQFOUA7F4KOUBF0。将其粘贴到“令牌已解密,无任何问题”-令牌未加密,但仅使用base64url编码。但当我尝试上面发布的带有秘密“secret”的令牌时jwt.io无法验证。请确保您拥有正确的机密,并查看是否可以在jwt.io上验证(通过将令牌粘贴到“验证签名”下右栏的字段中)。这不是我应该做的吗?这是结果的屏幕截图是的,但请查看屏幕截图中的签名(左栏中的蓝色字符)。这与您问题中的帖子不一样。因此,您上面代码示例中的令牌和密码不匹配。请使用屏幕截图中显示的令牌,并尝试在您的代码中验证它,这应该有效。它现在有效吗?不,我重新检查了所有内容以确定。我有这个令牌(一个新的令牌):Eyjrawqioijuuyismfszyi6ikhtmju2in0.Eyjzdwiijaw9uzwwiijvci6imf1dggiljzmwiojesimrzawqioi2ng2ng2n2lqwwzy2n2lqwwy2n2n2lqwwy2n2nzy2nzy2nzzy2nzzyzyzyzyzy2nzy2nzyzyzzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzy6mzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzzyzyzzzzyzyzyzzyzyzyzyzyzzyzyzyzyKIOIJMNDUYYJU1OS1JZJG1TRKNJYTYMQ4NY1COGM1NZY3MUZOGEILCJKAWQIOIXTZTMDQWZC01ZGM5LTRLMZKTYJBJYY0WMJUWZTI4ZJY0MDQIFQ.NPUF1T30是BPPVGFD9UAYRRLQUOUGQOFO7F4KOUBF0。将其粘贴到