我的用户表中有一个名为'role'的字段,0 - 普通用户,1 - admin。
我有多个只有管理员使用的控制器。仅允许角色为1的用户使用它们的最简单方法是什么?我将所有这些控制器放在一个名为“admin”的文件夹中。
目前我的routes.php文件中有if测试,如此
if(Auth::user()->role == 1) {
Route::resource('someRes', 'someResController');
}
但我已经意识到这是错误的做法。
答案 0 :(得分:1)
只需将支票转换为路由过滤器:http://laravel.com/docs/routing#route-filters
然后使用路由组对受限制的路由进行分组,并对其应用该过滤器:http://laravel.com/docs/routing#route-groups
答案 1 :(得分:1)
如上所述,使用路由组,允许您对路由进行分组并过滤:
Route::group(array('before' => 'checkUser'), function()
{
Route::resource('someRes', 'someResController');
Route::resource('anotherRes', 'anotherResController');
});
然后在你的过滤器中:
Route::filter('checkUser', function()
{
if(Auth::user()->role !== 1)
{
return Redirect::route('loginRoute')->with('message', 'Authorization required');
}
});