0
我是Laravel新手(非常新手),使用Laravel 5.2上的Cartalyst Sentinel來利用角色授權。Laravel和Sentinel:混合角色中間件授權
在管理部分,我有三個(或更多)角色,即「admin」,「agent」和「writer」。
我也有一些部分應該有混合角色訪問,即是這樣的:
- 儀表板(所有角色訪問:管理,代理,作家)
- 用戶(訪問:管理員)
- 訂單(訪問:管理員,代理)
- 頁面(可訪問:管理員,作家)
- no_admin_here(訪問:代理,作家)
目前我管理它只有兩個角色,但現在我卡住了。
什麼我迄今所做的(我只放了必要的代碼):
routes.php文件
// only authenticated users can access these pages
Route::group(['prefix' => 'admin', 'as' => 'admin.', 'middleware' => ['check']], function(){
// these pages are accessible to all roles
Route::get('dashboard', ['as' => 'dashboard', function(){
return view('admin/dashboard');
}]);
// only admin can access this section
Route::group(['middleware' => 'admin'], function(){
Route::get('users', function(){
return view('admin/users');
});
});
});
SentinelCheck中間件(在Kernel.php命名爲 '檢查')
if (!Sentinel::check()) { // user is not authenticated
return redirect()->route('admin.login')->with('error', 'You must be logged to view the page');
}
if (Sentinel::inRole('customer')) { // user is authenticated but he is a customer
return redirect()->route('admin.login')->with('error', 'You are a customer and cannot access to backend section');
}
SentinelAdmin中間件(在Kernel.php命名爲 '管理員')
if (!Sentinel::inRole('admin')) { // user is authenticated but he is not an admin
return redirect()->route('admin.login')->with('error', 'You are not admin and cannot view requested section');
}
SentinelAgent中間件(在Kernel.php命名爲「代理人」)
if (!Sentinel::inRole('agent')) { // user is authenticated but he is not an agent
return redirect()->route('admin.login')->with('error', 'You are not agent and cannot view requested section');
}
到目前爲止好,就像我說的,但亂七八糟的東西,當我嘗試混合角色了;即我不能寫這樣的路線:
// only admin and agent can access this section
Route::group(['middleware' => ['admin', 'agent']], function(){
Route::get('orders', function(){
return view('admin/orders');
});
});
因爲「代理」永遠達不到,因爲「admin」的中間件將阻止和註銷了他的部分。而且,同樣的,我不能做所有的其他角色組合:
['middleware' => ['admin', 'writer']]
['middleware' => ['agent', 'writer']]
['middleware' => ['admin', 'writer', 'whatever_else_role']]
等。
那麼,有沒有一個(簡單的)方式,我可以輕鬆地將角色訪問板塊?在此先感謝您的幫助