[英]Customizing auth middleware - Laravel 5
Laravel 5隨附的已交付auth
中間件非常適合僅用於用戶的路由和控制器,但是我想添加一種功能,還可以檢查用戶是否是管理員。
當前,在我的控制器中,每個班級都有這個:
if (Auth::user()->level <= 1) {
// admin can do these actions
} else {
// redirect
}
這是非常多余的,我想看看我的選擇是什么。 由於我想保留用於用戶身份驗證的原始auth
中間件,我應該為管理員身份驗證構建一個新的中間件,還是可以對可以解釋上述代碼的原始auth
中間件進行一些簡單的更改?
Laravel 5.0中的中間件不支持參數(將在即將發布的5.1版本中添加)。
您的選擇是為此創建單獨的中間件,或使用路由過濾器。
您可以通過將其放入RouteServiceProvider
的boot
方法中來創建路由過濾器:
$router->filter('userLevel', function($route, $request, $level)
{
$user = auth()->user();
if ( ! $user || $user->level > $level)
{
return response('Unauthorized', 401);
}
});
然后在您的路線中使用該過濾器:
Route::group(['before' => 'userLevel:1'], function($router)
{
// define routes...
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.