簡體   English   中英

自定義身份驗證中間件-Laravel 5

[英]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版本中添加)。

您的選擇是為此創建單獨的中間件,或使用路由過濾器。


您可以通過將其放入RouteServiceProviderboot方法中來創建路由過濾器:

$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.

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