php - JWT 解码 try catch

标签 php jwt

我在我的小项目中使用 JWT 进行授权 (REST API)。 JWT 看起来非常适合我的项目。

假设我有这段代码:

$key = "secret";
$token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ"
$data = JWT::decode($token, $key, array('HS256'));

此代码将返回一个数组,如 JWT 的官方页面所示。​​

但是如果我尝试运行以下代码:

$key = "secret";
$token = "abc.abc.abc"
$data = JWT::decode($token, $key, array('HS256'));

$key = "secret";
$token = "abc"
$data = JWT::decode($token, $key, array('HS256'));

PHP 将发出异常/错误,我该如何处理这些异常/错误,以便最终用户看不到它们(连同我在错误中的 key )。

我已尝试执行以下操作:

try {
    $key = "secret";
    $token = "abc"
    $data = JWT::decode($token, $key, array('HS256'));
} catch (Exception $e) { // Also tried JwtException
    echo 'error';
}

最佳答案

我刚遇到同样的问题,捕获此错误的解决方案是:

catch (\Exception $e) not catch (Exception $e)

所以你的代码变成:

try {
    $key = "secret";
    $token = "abc"
    $data = JWT::decode($token, $key, array('HS256'));
} catch (\Exception $e) { // Also tried JwtException
    echo 'error';
}

在这里找到:https://github.com/firebase/php-jwt/issues/50

关于php - JWT 解码 try catch ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41492119/

相关文章:

php - 具有多个提交按钮或多个表单的表单

php - 如何创建一个可以转换为 boolean 值的 php 类(真值或假值)

asp.net-mvc - 应该存储哪些 JWT token 以备后用?

typescript - 为什么 jwtService 未定义?

php - Codeigniter 分页使用页码重复内容

php - 将html文档中的英文数字转换为阿拉伯数字

c# - 如何读取已过期的 JWT token

amazon-web-services - Amazon Cognito为什么不在其访问 token 中返回受众字段?

python - 如何在Python中生成JWT断言

php - 使用 like 获取日期之间的数据