我正在尝试使用 Laravel 5.2 开发 RESTful API。我偶然发现如何以 JSON 格式返回失败的授权。目前,它抛出 403 页面错误而不是 JSON。
控制器:TenantController.php
class TenantController extends Controller
{
public function show($id)
{
$tenant = Tenant::find($id);
if($tenant == null) return response()->json(['error' => "Invalid tenant ID."],400);
$this->authorize('show',$tenant);
return $tenant;
}
}
Policy: TenantPolicy.php
class TenantPolicy
{
use HandlesAuthorization;
public function show(User $user, Tenant $tenant)
{
$users = $tenant->users();
return $tenant->users->contains($user->id);
}
}
授权当前工作正常,但显示 403 禁止页面而不是返回 json 错误。是否可以将其作为 403 的 JSON 返回?并且,是否可以将所有失败的授权设为全局(而不仅仅是在此控制器中)?
我们设法通过修改异常处理程序来解决这个问题App\Exceptions\Handler.php
将其添加到render
功能。
public function render($request, Exception $e)
{
if ($e instanceof AuthorizationException)
{
return response()->json(['error' => 'Not authorized.'],403);
}
return parent::render($request, $e);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)