如何在 laravel5 中从中间件中抛出禁止的异常?

2022-08-30 12:43:50

我正在用 laravel 5 编写中间件。我想从中间件中抛出一个带有代码403的禁止异常。我的中间件功能如下:

use Exception;

public function handle($request, Closure $next)
{
    if (!Auth::check()) {
        throw new Exception("Access denied", 403);
    }
    return $next($request);
}

我从控制器调用我的中间件,我收到代码为500但不是403的错误消息。如何解决此问题?


答案 1

您只需使用帮助程序即可。(或abort()App::abort())

public function handle($request, Closure $next) {
    if (!Auth::check()) {
        abort(403, 'Access denied');
    }
    return $next($request);
}

您可以通过重写来处理内部的这些异常 例如:App\Exceptions\Handlerrender()

public function render($request, Exception $e)
{
    if($e instanceof HttpException && $e->getStatusCode() == 403){
        return new JsonResponse($e->getMessage(), 403);
    }    
    return parent::render($request, $e);
}

答案 2

推荐