Laravel 4 Auth перенаправляет всегда на страницу входа? /авторизоваться

Я использую laravel для своего веб-приложения и в routes.php У меня есть:

// admin routes Route::group(array('before' => 'auth'), function() { Route::controller('admin', 'UsersController'); }); 

Я хочу защитить и проверить, зарегистрирован ли пользователь, но этот код всегда перенаправляется на «/ login», я хочу, чтобы он перенаправлялся на «admin / login», это можно сделать?

В файле filters.php фильтр auth умолчанию, он должен выглядеть следующим образом:

 Route::filter('auth', function($route, $request) { if (Auth::guest()) return Redirect::guest('login'); // /login url }); 

Этот фильтр (приведенный выше) будет проверять, не будет ли пользователь входить в систему, тогда произойдет перенаправление, и пользователь будет отправлен на /login url и в противном случае ничего не произойдет, пользователь будет отправлен на запрашиваемую страницу.

Кроме того, по умолчанию доступен следующий filter , и этот filter просто проверяет, был ли пользователь уже зарегистрирован, тогда он будет перенаправлен на / (домашняя страница) по умолчанию:

 Route::filter('guest', function($route) { if (Auth::check()) return Redirect::to('/'); // you may change it to /admin or so }); 

Этот ( guest ) фильтр используется с /login как указано ниже, поэтому, если зарегистрированный пользователь должен войти в систему, тогда пользователь будет перенаправлен на домашнюю страницу по умолчанию:

 Route::get('login', array('before' => 'guest', 'uses' => 'UsersController@getLogin')); 

Теперь, в вашем файле routes.php вы routes.php следующий маршрут:

 Route::group(array('before' => 'auth'), function() { Route::controller('admin', 'UsersController'); }); 

Если все в порядке, то эта настройка должна работать. Если пользователь, выйдя из системы, пытается посетить admin тогда пользователь будет отправлен для login в login и они по умолчанию доступны и должны работать.

Да. Добавьте следующий фильтр:

 Route::filter('auth.admin', function() { if (Auth::guest()) return Redirect::guest('admin/login'); }); 

Я скопировал оригинальный фильтр auth поставляемый с Laravel.

Затем используйте новый фильтр:

 Route::group(array('before' => 'auth.admin'), function() { Route::controller('admin', 'UsersController'); }); 

Полное решение:

 Route::filter('auth.admin', function() { // if not logged in redirect to the login page if (Auth::guest()) return Redirect::guest('admin/login'); }); Route::filter('auth.login', function() { // if already logged in don't show login page again if (Auth::check()) return Redirect::to('admin'); }); Route::get('admin/login', ['before' => 'auth.login', 'uses' => 'UsersController@getLogin']); Route::group(['before' => 'auth.admin'], function () { Route::controller('admin', 'UsersController'); });