ada*_*m78 2 acl laravel laravel-5 laravel-5.1 laravel-authorization
在 laravel 5.1 中,如果您使用以下方法,您可以在检查能力时返回自定义响应:
if (Gate::denies('update', $post)) {
return response()->view('errors.403');
}
Run Code Online (Sandbox Code Playgroud)
有没有什么办法在使用authorize方法时返回类似的自定义错误:
$this->authorize('update', $post);
Run Code Online (Sandbox Code Playgroud)
上面只是抛出一个状态码为 403 的 http 异常。
我可以通过以下方式做到这一点:
在App\Http\Controllers\Controller添加以下方法:
protected function createGateUnauthorizedException(
$ability,
$arguments,
$message = 'This action is unauthorized.',
$previousException = null
) {
throw $previousException;
}
Run Code Online (Sandbox Code Playgroud)
它会重新抛出UnauthorizedException.
现在App\Exceptions\Handler.php你可以在render方法的开头添加:
if ($e instanceof \Illuminate\Auth\Access\UnauthorizedException) {
return response()->view('errors.403');
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6788 次 |
| 最近记录: |