过滤器不适用于Laravel 4

时间:2014-03-09 15:35:03

标签: php laravel filter laravel-routing

我无法在Laravel 4中使用过滤器。

这是我的代码:

/**
* filters.php
**/
Route::filter('isAdmin', function()
{
    if (Auth::check())
    {
        if(Auth::user()->level == 'User')
            return Redirect::to('/');
    }
    return Redirect::to('/auth/login');

});  Route::when('admin/*', 'isAdmin');

/**
* routes.php
**/

Route::get('admin/home', 'AdminController@home'));
Route::get('admin', 'AdminController@home');

我不明白为什么这个过滤器不起作用。在路由/admin/*中完全忽略此过滤器。我希望只有已登录的管理员才能看到管理面板。

1 个答案:

答案 0 :(得分:1)

这是因为斜杠,你的过滤器正在使用'admin / home'而不是'admin'路由。为要过滤的两条路线写下这个。

Route::when('admin*', 'isAdmin');

或更好

Route::group(array('prefix' => 'admin', 'before' => 'isAdmin'), function()
{
    Route::get('home', 'AdminController@home'));
    Route::get('/', 'AdminController@home');
});