0

如果登录,我正在尝试将索引页面路由到不同的位置,但是即使我的身份验证系统工作,它也不会重定向到我期望的位置,即 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'));
});

并且行为正确,我只能在登录时访问 /dash 那么为什么我的索引路由不起作用?

4

1 回答 1

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方法上使用它。

于 2013-07-22T01:50:32.717 回答