2014-10-21 3 views
0

В пути у меня есть группа маршрута, которые находятся под защитой с фильтром backend_loginLaravel перенаправлять дилеммой после авторизации

Route::group(array('prefix' => 'backend', 'before' => 'backend_auth'), function() { 

    Route::get('/','[email protected]'); 
    Route::get('/main', '[email protected]'); 
    Route::get('/logout', 'UserMainController'); 
}); 


Route::any('backend/login', array('as' => 'backend_login', 'uses' =>'[email protected]')); 

в filter.php я есть фильтр

Route::filter('backend_auth', function(){ 
    if (! Sentry::check()) return Redirect::route('backend_login'); 
}); 

Проблема заключается в том, когда пользователь уже зарегистрированный, он все равно может вернуться на страницу входа. Я попытался предотвратить это, добавив фильтр «backend_auth»

Route::filter('backend_auth', function(){ 
    if (! Sentry::check()) return Redirect::route('backend_login'); 
    else { 
     return Redirect::to('backend/main'); 
    } 
}); 

Но тогда я получил цикл переадресации. На самом деле, перенаправление на backend/main после входа в систему - это то, что я хочу, но я не могу заставить его работать правильно. Любая идея, как решить эту проблему?

+0

Проверьте, что фильтр вызывается. Если вы не проверяете среду, которую используете, поскольку фильтры в рамках тестирования env отключены по умолчанию. –

+0

извините, но я действительно не понимаю, что вы хотите сказать. – user3140598

+0

Проверить с помощью dd ('Тестирование'); в пределах вашего фильтра он вызывается. Если он не вызывается, то среда, которую использует laravel (например, локальная, производственная или тестовая и т. Д.), Может быть настроена на тестирование. –

ответ

0

Я нашел ответ. В файле filter.php мне просто нужно проверить, зарегистрирован ли пользователь, чтобы показать ему страницу входа. Затем в начале функции входа в AdminUserController я решит, хочу ли я перенаправить его на backend/main или нет. Таким образом, проблема с бесконечным циклом перенаправления будет решена.

if (Sentry::check()) return Redirect::route('backend_main'); 
Смежные вопросы