laravel - 使用 Laravel 5.1 授权方法时如何返回自定义 403 异常

标签 laravel laravel-5 laravel-5.1 acl laravel-authorization

在 laravel 5.1 中,如果使用以下方法,您可以在检查能力时返回自定义响应:

if (Gate::denies('update', $post)) {
        return response()->view('errors.403');
}

使用authorize方法时有没有办法返回类似的自定义错误:

$this->authorize('update', $post);

上面只是抛出了一个状态码为 403 的 http 异常。

最佳答案

我可以通过以下方式做到这一点:

App\Http\Controllers\Controller中添加以下方法:

protected function createGateUnauthorizedException(
    $ability,
    $arguments,
    $message = 'This action is unauthorized.',
    $previousException = null
) {
    throw $previousException;
}

它将重新抛出UnauthorizedException

现在,在 App\Exceptions\Handler.php 中,您可以在 render 方法的开头添加:

if ($e instanceof \Illuminate\Auth\Access\UnauthorizedException)  {
    return response()->view('errors.403');
}

关于laravel - 使用 Laravel 5.1 授权方法时如何返回自定义 403 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34256000/

相关文章:

php - Laravel 加入 Auth 表

php - 模型上的 SoftDeletes 会破坏动态属性

php - 使用 2D 阵列在 Blade 中打印表格

mysql - Laravel Eloquent 关系 'with' 关键字

php - 在 Laravel 中返​​回带有参数的 View

laravel - 如何更改最大文件大小的 Laravel 验证消息(以 MB 而不是 KB 为单位)?

php - 在 Laravel 中获取特定时间范围内的记录

php - Laravel 5.2.31 中 API 的 TokenMismatchException

php - Laravel 有很多通过 2 个表

php - 如何将附加数据发送到 laravel.log 文件?