📌  相关文章
📜  doVerify() 必须是 Lcobucci\\JWT\\Signer\\Key 的实例 - SQL (1)

📅  最后修改于: 2023-12-03 15:30:33.670000             🧑  作者: Mango

Lcobucci\JWT\Signer\Key

Lcobucci\JWT\Signer\Key是一个用于验证JWT的PHP库,它提供了一种简单的方法来生成和验证JWT。在验证JWT时,需要使用doVerify()方法来验证签名,而该方法的参数必须是Lcobucci\JWT\Signer\Key的实例。

方法
public function doVerify($expectedSignature, Signer $signer, Key $key)
参数
  • $expectedSignature:预期签名。字符串类型。
  • $signer:签名者。Signer的实例类型。
  • $key:签名秘钥。Key的实例类型。
返回值
  • 如果签名验证成功,则返回true。
  • 如果签名验证失败,则抛出异常。
例子
use Lcobucci\JWT\ValidationData;
use Lcobucci\JWT\Parser;
use Lcobucci\JWT\Signer\Hmac\Sha256;
use Lcobucci\JWT\Signer\Key;

// 验证签名
$jwt = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c';

$token = (new Parser())->parse($jwt);

$signer = new Sha256();

$key = new Key('your-secret');

$data = new ValidationData();

$data->setIssuer('http://example.com');
$data->setAudience('http://example.org');
$data->setId('4f1g23a12aa');

if (!$token->validate($data)) {
    throw new \RuntimeException('Invalid Token');
}

if (!$token->verify($signer, $key)) {
    throw new \RuntimeException('Failed to verify the signature');
}

return true;

这是一个完整的JWT验证的例子。在此例中,我们使用了Lcobucci\JWT\Signer\Key的实例来验证签名。在doVerify()方法中,我们将验证预期签名,签名者和签名密钥。如果验证成功,则返回true,否则抛出运行时异常。

参考文献