我在我的小项目中使用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';
}
答案 0 :(得分:7)
我只是针对同一个问题,解决此错误的解决方案是:
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';
}