【问题标题】:JWT Decode try catchJWT 解码尝试捕获
【发布时间】:2018-10-09 18:56:09
【问题描述】:

我在我的小项目中使用 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 将发出异常/错误,我该如何处理这些异常/错误,以使最终用户看不到它们(连同我在错误中的密钥)。

我已尝试执行以下操作:

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

【问题讨论】:

    标签: php jwt


    【解决方案1】:

    我遇到了同样的问题,解决这个错误的方法是:

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-07
      • 1970-01-01
      • 2021-12-12
      • 2012-01-28
      • 2019-08-25
      • 2017-09-12
      • 1970-01-01
      • 2010-09-12
      相关资源
      最近更新 更多