簡體   English   中英

如何捕獲Laravel控制器異常

[英]How to catch laravel controller exceptions

我是Laravel的新手(我們在工作中使用5.0)。 現在,當我們在Controller中響應API請求時,我們將一遍又一遍地重寫相同的代碼以響應未經授權的操作。 例如,

public function getUsers(){
  if (Entrust::can('users.view')){
    $users = Users::get();
    return response()->done($users, 200);
  } else {
    return response()->unauthorized('users.view');
  }
}

如果我們擁有允許API請求成功的不同權限,它將變得越來越復雜。

如果用戶無法執行API請求,我只想拋出某種異常。 例如,

public function getUsers(){
  require('users.view'); // throws an UnauthorizedException if current user doesn't have 'users.view' permission

  $users = User::get();
  return response()->done($users, 200);
}

public function someOtherMethod(){
  if (!Entrust::can('permission1') && !Entrust::can('permission2')){
    throw new UnauthorizedException(['permission1', 'permission2']);
  }

  // some other stuff
}

但是我不知道什么代碼調用API函數,也不知道在何處將其包裝在try / catch中。 編寫UnauthorizedException很容易,並且很容易將其轉換為json,但是我應該在哪里放置處理程序? 如我所說,我是Laravel的新手,我不知道它如何處理這些異常。

理想情況下,無論我找到什么解決方案,我都希望將其擴展到其他異常,以便我們可以基於常見異常獲得一致的json響應。

與其重復您的代碼,不如看一下如何使用中間件實現授權檢查。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM