中間件應該要麼返回響應或向下傳遞的管道請求中間件是相互獨立的。不應該知道其他中間件運行。
您需要實現一個單獨的中間件,讓兩個角色或單一的中間件是需要讓角色的參數。
選項1:只是創建一箇中間件是Auth1和Auth2的組合版本,用於檢查2個用戶類型。這是最簡單的選擇,雖然不是很靈活。
選項2:因爲5.1版中間件可以帶參數 - 在這裏看到更多的細節:https://laravel.com/docs/5.1/middleware#middleware-parameters。您可以實現一箇中間件,該中間件將獲取用戶角色列表以進行檢查,並只在路由文件中定義允許的角色。下面的代碼應該做的伎倆:
// define allowed roles in your routes.php
Route::group(['namespace' => 'Common', 'middleware' => 'checkUserRoles:role1,role2', function() {
//routes that should be allowed for users with role1 OR role2 go here
});
// PHP < 5.6
// create a parametrized middleware that takes allowed roles as parameters
public function handle($request, Closure $next) {
// will contain ['role1', 'role2']
$allowedRoles = array_slice(func_get_args(), 2);
// do whatever role check logic you need
}
// PHP >= 5.6
// create a parametrized middleware that takes allowed roles as parameters
public function handle($request, Closure $next, ...$roles) {
// $roles will contain ['role1', 'role2']
// do whatever role check logic you need
}
最適合的授權(門和政策) –