PHP JWT令牌无效签名 [英] PHP JWT Token Invalid Signature
问题描述
我正在搜索一个小时,找不到解决此问题的方法.
I'm searching for an hours now and can't find a solution to this problem.
这是生成JWT令牌的代码.我使用了 https://github.com/firebase/php-jwt 库.
This is the code to generate JWT token. I used https://github.com/firebase/php-jwt library.
$tokenId = base64_encode(mcrypt_create_iv(32));
$issuedAt = time();
$notBefore = $issuedAt + 10; //Adding 10 seconds
$expire = $notBefore + 60; // Adding 60 seconds
$serverName = 'serverName'; // Retrieve the server name from config file
$secretKey = base64_decode(getenv('JWT_SECRET'));
$data = [
'iat' => $issuedAt, // Issued at: time when the token was generated
'jti' => $tokenId, // Json Token Id: an unique identifier for the token
'iss' => $serverName, // Issuer
'nbf' => $notBefore, // Not before
'exp' => $expire, // Expire
'data' => [ // Data related to the signer user
'userId' => '1', // userid from the users table
'userName' => $UserName, // User name
]
];
$jwt = JWT::encode(
$data, //Data to be encoded in the JWT
$secretKey, // The signing key
'HS256' // Algorithm used to sign the token
);
$unencodedArray = ['jwt' => $jwt];
echo json_encode($unencodedArray);
然后我在 https://jwt.io/
有人可以帮助我解决这个问题吗?我目前是JWT的新手.顺便说一句,我的项目是Slim API.
Can anybody help me with this problem? I'm currently new in JWT. Btw, my project is Slim API.
非常感谢您.
推荐答案
签名验证失败,因为您没有将正确的密钥传递给 https://jwt.io/您需要从PHP代码传递$secretKey
的值.根据屏幕截图,您正在传递字符串secret
.
Signature verification fails because you are not passing the correct secret key to https://jwt.io/ You need to pass the value of $secretKey
from the PHP code. According to the screenshot you are passing string secret
.
这篇关于PHP JWT令牌无效签名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!