Laravel:使用一个规则过滤多个控制器的最简单方法?

时间:2013-12-29 22:40:22

标签: php laravel laravel-4

我的用户表中有一个名为'role'的字段,0 - 普通用户,1 - admin。

我有多个只有管理员使用的控制器。仅允许角色为1的用户使用它们的最简单方法是什么?我将所有这些控制器放在一个名为“admin”的文件夹中。

目前我的routes.php文件中有if测试,如此

if(Auth::user()->role == 1) {

    Route::resource('someRes', 'someResController');

}

但我已经意识到这是错误的做法。

2 个答案:

答案 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');
    }
});