因此,我有使用CI4的JWT身份验证API,其中一个方法是过滤,它告诉您是否有JWT的令牌,如果用户没有令牌,它将返回一个异常,告诉您JWT身份验证失败,如下所示:
Postman :
网页:
有没有可能像这样做得更简单?,只是一个响应,没有像第一个图像
中的跟踪异常
下面是jwt_helper.php:
<?php
use App\Models\AuthModel;
use Firebase\JWT\JWT;
function getJWT($headerAuth)
{
if (is_null($headerAuth)) {
throw new Exception("JWT Authentication failed");
}
return explode(" ", $headerAuth)[1];
}
function validateJWT($encodedToken)
{
$key = getenv('JWT_SECRET_KEY');
$decodedToken = JWT::decode($encodedToken, $key, ['HS256']);
$authModel = new AuthModel();
// * xxxx.xxxx.xxxx
$authModel->getEmail($decodedToken->email);
}
function createJWT($email)
{
$requestTime = time();
$tokenTime = getenv('JWT_TOKEN_TIME');
$tokenExpireTime = $requestTime + $tokenTime;
$payload = [
'email' => $email,
'iat' => $requestTime,
'exp' => $tokenExpireTime
];
$jwt = JWT::encode($payload, getenv('JWT_SECRET_KEY'), 'HS256');
return $jwt;
}
1条答案
按热度按时间wfypjpf41#
此完整堆栈仅在DEVELOTION中显示。
相应地编辑.ENV文件。
更新:更多详细信息
所以,当然,你必须把错误写在一个日志文件中。这可能已经是这样了:您可以检查/writable/logs目录中的CI日志和PHP目录中的PHP日志(您可以在phpinfo中查找error_log变量)。
然后你应该尝试向你的用户显示一个简单易懂的错误,通常是通过重定向他们到/views/errors/html/production. php,但是如果你愿意,可以给他们提供更多的细节,和/或指定一个HTTP_STATUS或EXIT CODE(CI 4.3+)。
然而,不建议使用DEVELOP模式(在.env中指定),因为您将向用户给予太多的细节,这可能是有害的(显示连接、目录等)。
我建议您阅读此页面:https://codeigniter.com/user_guide/general/errors.html#