[英]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.