我无法在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/*
中完全忽略此过滤器。我希望只有已登录的管理员才能看到管理面板。
答案 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');
});