如何在默认回复护照中添加状态

时间:2018-07-06 16:59:03

标签: laravel api laravel-passport

我正在开发Web和App中的应用程序。对于App的API,我在laravel中使用了Passport。使用护照我可以创建令牌,并使用该令牌可以验证用户是否可以进行其他api访问。但是,如果令牌无效,则它将返回错误消息,例如“未经授权”,而没有任何状态。如果我想通过消息“ Unauthorized”添加错误状态(例如401),谁能告诉我该怎么办。我必须更改代码的位置,以免影响我的Web代码。我想要像下面这样的json响应,其中json中有2个字段。

状态:401 消息:未经授权

2 个答案:

答案 0 :(得分:2)

您可以创建一个新的异常处理程序中间件来捕获这些请求并修改其返回的响应。

示例:

class oAuthExceptionHandler {
    public function handle($request, Closure $next) {
        try {
            $response = $next($request);

            if (isset($response->exception) && $response->exception) {
                throw $response->exception;
            }

            return $response;
        } catch (\Exception $e) {
            return response()->json(array(
                'result' => 0,
                'msg' => $e->getMessage(),
            ), 401);
        }
    }
}

然后,在您的app/Http/Kernel.php中,命名中间件并将其添加到您的api组中:

protected $routeMiddleware = [
    'oauth_exception' => oAuthExceptionHandler::class,
    ...
];

protected $middlewareGroups = [
    ...

    'api' => [
        'oauth_exception',
        ...
    ],
];

答案 1 :(得分:0)

您可以处理api异常,并在app/Exceptions/Handler.php中设置其响应格式。

这是您可以点击的链接

Laravel API, how to properly handle errors