当前位置: 首页 > 知识库问答 >
问题:

处理laravel中的jwt auth错误

西门骁
2023-03-14


我正在做一个RESTAPI项目<我在为一个问题挣扎。当我得到令牌过期错误时,生成的代码如下所示:

public function authenticate(Request $request){
    $this->checkForToken($request);

    try {
        if (! $this->auth->parseToken()->authenticate()) {
            throw new UnauthorizedHttpException('jwt-auth', 'User not found');
        }
    } catch (JWTException $e) {
        throw new UnauthorizedHttpException('jwt-auth', $e->getMessage(), $e, $e->getCode());
    }
}

这段代码写在这个文件中:

供应商/tymon/jwt-auth/src/Http/Middleware/BaseMiddleware.php


如何将其作为JSON类型返回?

共有1个答案

南宫凯康
2023-03-14

在App\Exceptions\Handler类的render方法中捕获该异常,并返回格式为json的响应:

// Handler.php
// import the class of the exception you want to render a json response for at the top
use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException;
...

public function render($request, Exception $exception)
{   

  // if your api client has the correct content-type this expectsJson() 
  // should work. if not you may use $request->is('/api/*') to match the url.


  if($request->expectsJson()) 
  {

    if($exception instanceof UnauthorizedHttpException) {

      return response()->json('Unauthorized', 403);

    }

  }

  return parent::render($request, $e);

}
 类似资料:
  • 我正在使用Laravel 5.5,并试图实现用户和管理员的多重身份验证。我得到这个错误时,我试图调用管理员登录表单在浏览器。 错误: 声明应用\Exceptions\Handler::未经身份验证($请求,应用\Exceptions\身份验证异常$异常)应与Illumate\Foundation\Exceptions\Handler兼容::未经身份验证($请求,Illumate\Auth\身份验证

  • 对于一个优秀的框架来说,正确的异常处理可以防止暴露自身接口给用户,可以提供快速追溯问题的提示给开发人员。本文会详细的介绍 laravel 异常处理的源码。 PHP 异常处理 本章节参考 PHP错误异常处理详解。 异常处理(又称为错误处理)功能提供了处理程序运行时出现的错误或异常情况的方法。    异常处理通常是防止未知错误产生所采取的处理措施。异常处理的好处是你不用再绞尽脑汁去考虑各种错误,这为处

  • 问题内容: 反正有一起禁用laravel错误处理程序吗? 我想简单的显示 标准的PHP错误 , 没有 了错误。 问题答案: 并非没有主要违反框架原理的问题(如果您仍然感兴趣,我将在下面告诉您如何做)。 有一些事情使这很难完成。取消默认错误和异常处理程序很容易 但这给您带来两个主要障碍。 第一个是Laravel在其引导过程中注册了一个关闭处理程序,该关闭功能将查找最后一个错误,如果是致命错误,请手动

  • 问题内容: 解析器不知道要做什么时的默认行为是将消息打印到终端,例如: 第1:23行在“}”处缺少DECIMAL 这是一个很好的信息,但是在错误的位置。我宁愿将此作为例外。 我尝试使用,但是会抛出一个没有消息的消息(由引起,也没有消息)。 有什么办法可以让我通过异常报告错误,同时又保留消息中的有用信息? 这就是我真正想要的—我通常在规则中使用动作来构建对象: 然后,当我调用解析器时,我将执行以下操

  • 问题内容: 我有一系列要解决的承诺 我继续继续诺言链。看起来像这样 我想添加一个catch语句来处理单个promise,以防万一出错,但是当我尝试时,返回它发现的第一个错误(忽略其余的),然后我无法从其余的promise中获取数据数组(没有错误)。 我尝试做类似.. 但这并不能解决。 谢谢! - 编辑: 下面的答案完全正确,但代码由于其他原因而中断。如果有人感兴趣,这就是我最终得到的解决方案… 节

  • 问题内容: 有没有一种方法来处理错误,比如,你可以在使用块,等等? 我已经在网上搜索过,发现的唯一选择是global变量,但是它没有按我预期的那样工作,例如,以下代码: 确实会以某种方式回滚,因为我在table1上更改的名称保留了我在此处进行测试时的旧值,但是它不会打印消息,也不会执行我在导致错误的指令之后放置的任何指令 有人可以帮我吗?您知道Sybase错误处理是如何工作的吗? 问题答案: 第一