我正在尝试用Laravel5.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;
    }
}政策: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返回?而且,对于所有失败的授权(不仅仅是在这个控制器中),是否有可能使其成为全局的?
发布于 2020-03-24 16:39:41
至于最新版本的Laravel,现在的版本是>=7.x,
通常,设置请求头'Accept‘=> 'application/ json '会告诉Laravel您希望json响应返回。
对于错误,还需要通过在APP_DEBUG=false文件上设置.env来关闭调试,这将确保响应是json,并且不提供堆栈跟踪。
https://stackoverflow.com/questions/38580890
复制相似问题