如何使异常更简单CodeIgniter4

gv8xihay  于 2023-02-27  发布在  其他
关注(0)|答案(1)|浏览(158)

因此,我有使用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;
}
wfypjpf4

wfypjpf41#

此完整堆栈仅在DEVELOTION中显示。
相应地编辑.ENV文件。

CI_ENVIRONMENT = production

更新:更多详细信息

所以,当然,你必须把错误写在一个日志文件中。这可能已经是这样了:您可以检查/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#

相关问题