登录时的laravel路线不会触发

时间:2013-07-22 00:35:03

标签: php laravel

如果已登录,我正尝试将索引页面路由到其他位置,但即使我的身份验证系统正常工作,它也不会重定向到我预期的位置即getLogged,而是始终重定向到getIndex,无论我是否登录

Route::filter('auth', function()
{
    if (!Sentry::check()) return Redirect::to('/');
});

Route::group(array('before' => 'auth'), function() {
  Route::get('/', array('uses' => 'MyController@getLogged'));
});

Route::get('/', array('before' => 'detectLang', 'uses' => 'MyController@getIndex'));

我测试过以确保我的身份验证通过更改

来工作
Route::group(array('before' => 'auth'), function() {
  Route::get('/', array('uses' => 'MyController@getLogged'));
});

Route::group(array('before' => 'auth'), function() {
  Route::get('/dash', array('uses' => 'MyController@getLogged'));
});

并且在我登录时我只能访问/破坏,这就是为什么我的索引路由不起作用?

1 个答案:

答案 0 :(得分:1)

你两次声明相同的路线,它将无法正常工作。要实现此功能,请添加一个auth过滤器,而不是检查用户是否未连接,而不是添加guest过滤器,检查是否 即可。像这样:

Route::filter('guest', function () {
    if (Sentry::check()) return Redirect::route('logged');
});

然后,按照以下方式设置您的路线:

Route::get('/', array(
    'as'     => 'home',
    'uses'   => 'MyController@getIndex',
    'before' => 'guest'
));

Route::get('/logged', array(
    'as'     => 'logged',
    'uses'   => 'MyController@getLogged',
    'before' => 'auth|detectLang'
));

注意: as键为您的路线指定了名称,因此您可以在Redirect::routeURL::route方法上使用它。