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

标签 php exception laravel middleware laravel-5

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

use Exception;

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

我正在从 Controller 调用我的中间件,我收到代码为 500 但不是 403 的错误消息。我该如何解决这个问题?

最佳答案

您可以简单地使用 abort() 助手。 (或者 App::abort())

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

您可以通过覆盖 render()App\Exceptions\Handler 中处理这些异常 例如:

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

关于php - 如何从 laravel5 中的中间件抛出禁止的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28805680/

相关文章:

c# - 应用程序代码中 try-catch block 无法捕获的异常

Laravel HTML 净化器

Laravel 5.2 传递中间件参数在服务提供者中注册服务容器

PHPUnit:如何为类中的所有测试创建一次调用的函数?

php - 文本移出标题标签

javascript - 使用 PHP 包装器从 wkhtml 生成 PDF,发送回 Angular 4 时,仅在 Chrome 中打开

php - 如何保存复选框和下拉列表中的所有值

java - ScheduledThreadPoolExecutor 停止执行并捕获异常

JAVA Tic-Tac-Toe Minimax算法不断抛出异常

mysql - 无法登录MySQL服务器