Laravel Passport 如何在提供无效令牌时显示自定义错误消息

Laravel Passport How to show custom error message when invalid token is supplied

我正在尝试使用 Laravel 通行证创建一个 API,我必须保护一些路由,以便只有经过身份验证的用户才能访问这些路由。

Route::post('register', [ApiAuthController::class, 'register']);
Route::post('login', [ApiAuthController::class, 'login']);
Route::middleware('auth:api')->group(function () {
    Route::post('/task', [ApiControllerTaskController::class,'store']);
});

现在登录后,我得到了一个访问令牌,我就这样使用了这个访问令牌。

此处一切正常,但我想在删除不记名令牌时显示无效令牌错误消息。相反,我得到了这个。

确保在发送请求之前在 Postman 的 headers 中添加了 Content-type : application/json

这对我有用,如果您的 laravel 版本 >= 8.* 将此代码添加到位于 App/Exceptions/Handler.[=17 的 Handler.php =]

public function render($request, Throwable $e)
{
    if ($e instanceof AuthenticationException) {
        return response()->json($e->getMessage());
    }
    return parent::render($request, $e);
}

如果您需要更多帮助,请给我留言。希望能帮到你:)

//this worked for me (laravel 5.5)  App\Exceptions\Handler.php (CTRL render)
 protected function unauthenticated($request, AuthenticationException $exception)
    {
        if ($request->expectsJson() || $request->header('Authorization')) {
    
            $response = ['status' => false, 'message' => 'Invalid token supplied'];

            return response()->json($response, 401);
        }
        return redirect()->guest(route('login'));
    }