Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 同时使用web和令牌api gaurd时的异常处理_Laravel - Fatal编程技术网

Laravel 同时使用web和令牌api gaurd时的异常处理

Laravel 同时使用web和令牌api gaurd时的异常处理,laravel,Laravel,使用laravel5.8。使用web和APIToken Gaurd。 使用带有无效api_令牌参数的api调用时,接收到错误路由:未定义登录。我想要JSON格式的响应。在论坛中阅读,我需要在app\Exceptions\Handler.php中使用下面的方法,它可以工作。我有一些路径的web gaurd。我希望路径:当它是web gaurd时登录工作,当使用api gaurd时返回json响应。我如何在Laravel 5.8中做到这一点 public function render($req

使用laravel5.8。使用web和APIToken Gaurd。 使用带有无效api_令牌参数的api调用时,接收到错误路由:未定义登录。我想要JSON格式的响应。在论坛中阅读,我需要在app\Exceptions\Handler.php中使用下面的方法,它可以工作。我有一些路径的web gaurd。我希望路径:当它是web gaurd时登录工作,当使用api gaurd时返回json响应。我如何在Laravel 5.8中做到这一点

  public function render($request, Exception $exception)
    {
      //  dd(get_class($exception));
       // return parent::render($request, $exception);
        return response()->json(
            [
                'errors' => [
                    'status' => 401,
                    'message' => 'Unauthenticated',
                ]
            ], 401
        );
    }
我把逻辑放在未经验证的函数中,结合expectsJson应该可以解决您的问题

// in app\Exceptions\Handler.php
public function render($request, Exception $exception)
{
    return parent::render($request, $exception);
}

protected function unauthenticated($request, AuthenticationException $exception)
{
    if ($request->expectsJson()) {
        return response()->json(['status' => 401,'message' => 'Unauthenticated.'], 401);
    }

    return redirect()->guest('/');
}

谢谢你的信息。当我使用无效的api_令牌参数调用api时,它不会调用未经身份验证的方法。在Laravel 5.8中,使用api_令牌的api身份验证方法是新的。我的答案是使用Laravel Passport进行Laravel API身份验证