自定义 laravel 密室取消授权响应

Customize laravel sanctum unauthorize response

我在我的项目中使用 laravel sanctum,但我遇到了问题。我想在令牌无效时将 401 响应代码(未授权)自定义为 return a JSON,如下所示:

    {
    "data": {
        "code": 401,
        "book": null,
        "success": false,
        "error": {
            "message": "Not authenticated"
        }
    }
}

而不是默认响应:

{
    "message": "Unauthenticated."
}

如何在 laravel 密室中做到这一点?提前致谢。

您可以覆盖 Authenticate.php 中间件以输出您想要的消息,或者捕获 AuthorizationException 以在 Exception/Handler

中显示您想要的消息
public function render($request, Exception $exception)
{
    if ($exception instanceof AuthorizationException) {
        return response()->json([
         'message' => 'Not authenticated'
        ],401);
    }

    return parent::render($request, $exception);
}

Rendering exceptions

添加到ExceptionHandler@register app/Exceptions/ExceptionHandler.php

$this->renderable(function (\Illuminate\Auth\AuthenticationException $e, $request) {
    if ($request->is('api/*')) {
        return response()->json([
            'message' => 'Not authenticated'
        ], 401);
    }
});