簡體   English   中英

Laravel授權:重定向而不是異常?

[英]Laravel Authorization: Redirect instead of exception?

我想給已登錄並具有特定類型( leader )的用戶訪問控制器處理的所有頁面的權限。 文檔中,我發現我可以在構造函數內使用$this->middleware('Auth') ,它將重定向所有尚未登錄的用戶。 但是,我沒有找到如何執行此操作,而不是檢查用戶是否已登錄而不是檢查用戶是否被閘門允許。

AuthServiceProvider我創建了以下Gate

Gate::define('isLeader', function ($user) {
  return $user->isLeader();
});

在控制器內部,我具有以下構造函數

public function __construct()
{
    $this->middleware('auth');
    $this->middleware('can:isLeader');
}

對於作為leader用戶而言,這是可行的。 但是對於不是leader用戶,我會收到錯誤消息, This action is unauthorized. 通過此控制器訪問頁面時:

在此處輸入圖片說明

如果用戶不是leader我不希望拋出錯誤消息,而是將用戶重定向home 我該如何實現?

只需重新發布在laracast中給出答案即可

您可以在Exceptions \\ Handler.php文件中執行此操作

render方法將覆蓋AuthorizationException類,如果用戶被拒絕,authorizeException將拋出該類。

在render方法中,您可以執行

if($exception instanceof AuthorizationException) {
//your code
}

暫無
暫無

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

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