laravel 4 auth在管理仪表板之前的路线

时间:2014-09-29 19:06:29

标签: laravel laravel-4 routes authorization laravel-routing

在我的应用程序中,我只有授权用户才能访问管理员仪表板

在routes.php中

我有

    <?php



Route::get('/', 'HomeController@showWelcome');

Route::get('detail/{id}', 'HomeController@detail');

Route::get('add', 'HomeController@add');

Route::post('create', 'HomeController@create');

Route::get('login', 'SessionController@create');

Route::get('logout', 'SessionController@destroy');

Route::resource('sessions', 'SessionController');

Route::group(array('before' => 'auth'), function()
{
    Route::get('admin', 'AdminController@index');
    Route::get('admin/delete/{id}', 'AdminController@delete');
    Route::get('admin/edit/{id}', 'AdminController@edit');
    Route::get('admin/state/{id}', 'AdminController@state');
    Route::post('admin/update/{id}', 'AdminController@update');
});


Route::get('o_nas', 'AboutController@index');


View::composer('layouts.partials.categories', function($view)
{
    $view->categories = Category::all();
});

但如果我在没有登录的情况下尝试admin / edit / 2,则可以访问该页面。为什么之前&#39; auth&#39;在我的例子中不起作用

app / filters.php中的

    Route::filter('auth', function()
{
    if (Auth::guest()) return Redirect::guest('login');
});

1 个答案:

答案 0 :(得分:0)

我已在新项目中测试了您的代码,此处没有错误。唯一的可能是您已多次定义auth过滤器,例如,如果您已按此定义了过滤器:

Route::filter('auth', function()
{

});

// any other actions

Route::filter('auth', function()
{
    if (Auth::guest()) return Redirect::guest('login');
});

比你的过滤器没有按预期工作,因为似乎第一个过滤器可以正常工作。在其他情况下,一切都按预期工作 - 您可以使用routes.php创建一个新项目,过滤并仅创建SessionController,您会看到http://localhost/testproject/admin/edit/2会将您重定向到http://localhost/testproject/login }