在我的应用程序中,我只有授权用户才能访问管理员仪表板
在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');
});
答案 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
}