Laravel Passport-将默认的未经身份验证的响应更改为自定义响应

问题描述

先谢谢您

我正在使用laravel通行证进行API用户身份验证,而如果access_token无效,那么我们将收到如下响应

{ 
    "message": "Unauthenticated." 
}

但是我想要这样的回复

{ 
    "code" : 0,"message": "Unauthenticated." 
    "data" : [],}

解决方法

如果您想更改Laravel渲染错误的方式,可以在app/Exceptions/Handler.php类中进行。

在这种特殊情况下,您可以通过在您的unauthenticated类中添加te following来覆盖Handler方法:

protected function unauthenticated($request,AuthenticationException $exception)
{
    if ($request->expectsJson()) {
        return response()->json([
            'message' => $exception->getMessage(),'code'    => 0,'data'    => [],],401);
    }

    return redirect()->guest($exception->redirectTo() ?? route('login'));
}