身份验证重定向不起作用。前缀不显示
Auth redirect isn't working. Prefix doesn't show
一切正常,除了当我尝试打开一些需要身份验证的 link 时我得到了错误的路线。
Route::group(array('prefix' => 'admin'), function(){
Route::get('login', array('as' => 'admin.login', 'uses' => 'AdminAuthController@getLogin'));
Route::post('login', array('as' => 'admin.login.post', 'uses' => 'AdminAuthController@postLogin'));
Route::get('logout', array('as' => 'admin.logout', 'uses' => 'AdminAuthController@getLogout'));
});
Route::group(array('prefix' => 'admin', 'before' => 'auth'), function(){
Route::get('dashboard', array('as' => 'admin.dashboard', 'uses' => 'AdminWorksController@dashboard'));
Route::get('/', array('as' => 'admin.dashboard', 'uses' => 'AdminWorksController@dashboard'));
Route::resource('works', 'AdminWorksController', array('except' => array('show')));
});
所以当我执行 HTML::linkRoute('admin.login')
时,输出 link 很好,但是当我尝试在没有登录的情况下使用过滤器 'before'=>'auth'
在组中打开一个路由时,它会重定向到/login
而不是 /admin/login
.
除此之外,一切都很好。使用命令 php artisan routes
看起来也不错。
我做错了什么?我该如何解决这个错误的身份验证重定向?
将 app/filters.php
中的 auth
过滤器更改为:
Route::filter('auth', function()
{
if (Auth::guest())
{
if (Request::ajax())
{
return Response::make('Unauthorized', 401);
}
return Redirect::guest(route('admin.login'));
}
});
一切正常,除了当我尝试打开一些需要身份验证的 link 时我得到了错误的路线。
Route::group(array('prefix' => 'admin'), function(){
Route::get('login', array('as' => 'admin.login', 'uses' => 'AdminAuthController@getLogin'));
Route::post('login', array('as' => 'admin.login.post', 'uses' => 'AdminAuthController@postLogin'));
Route::get('logout', array('as' => 'admin.logout', 'uses' => 'AdminAuthController@getLogout'));
});
Route::group(array('prefix' => 'admin', 'before' => 'auth'), function(){
Route::get('dashboard', array('as' => 'admin.dashboard', 'uses' => 'AdminWorksController@dashboard'));
Route::get('/', array('as' => 'admin.dashboard', 'uses' => 'AdminWorksController@dashboard'));
Route::resource('works', 'AdminWorksController', array('except' => array('show')));
});
所以当我执行 HTML::linkRoute('admin.login')
时,输出 link 很好,但是当我尝试在没有登录的情况下使用过滤器 'before'=>'auth'
在组中打开一个路由时,它会重定向到/login
而不是 /admin/login
.
除此之外,一切都很好。使用命令 php artisan routes
看起来也不错。
我做错了什么?我该如何解决这个错误的身份验证重定向?
将 app/filters.php
中的 auth
过滤器更改为:
Route::filter('auth', function()
{
if (Auth::guest())
{
if (Request::ajax())
{
return Response::make('Unauthorized', 401);
}
return Redirect::guest(route('admin.login'));
}
});