бесконечный цикл входа в систему laravel после развертывания

Я использую Сентинел — https://github.com/rydurham/Sentinel — чтобы обработать аутентификацию пользователя для моего приложения, и иметь весь поддомен ‘admin’ в маршрутизации.

Route::group([ "domain" => 'app.domain.dev', 'before' => 'Sentinel\auth' ], function()
{
Route::group(array('prefix' => 'one'), function()
{
...
});

Route::group(array('prefix' => 'two'), function()
{
...
});

Route::get('/', array('as' => 'home', 'uses' => 'DashboardController@index'));
});

На локальном компьютере все работает нормально — app.domain.dev отображает панель администратора, если вы вошли в систему, и страницу входа в систему, если нет, при выходе из системы пользователь возвращается на страницу входа.

Однако после развертывания через Forge app.domain.dev вызывает ошибку бесконечного цикла, если не войти в систему. Тем не менее / login по-прежнему доступен и работает — после входа в систему панель инструментов загружается нормально. Если пользователь выходит из системы, он снова сталкивается с ошибкой бесконечного цикла.

Я не уверен, почему это работает локально и не развернуто, но я предполагаю, что это как-то связано с «домашним» маршрутом, находящимся внутри отфильтрованной группы «Sentinel \ auth»?

Фильтр авторизации Sentinel:

Route::filter('Sentinel\auth', function()
{
if (!Sentry::check()) return Redirect::guest(Config::get('Sentinel::config.routes.login'));
});

…и config.routes.login установлен в «логин».

Я понимаю сходство этого вопроса — Цикл перенаправления в Laravel — но меня смущает работа локально / сломанная развернутая.

3

Решение

Вид решил это. Как и указывалось в ссылке, самый простой (самый хакерский) способ — удалить корневой, эрм, маршрут из группы аутентификации:

Route::group([ "domain" => 'app.domain.dev' ], function()
{
Route::group([ 'before' => 'Sentinel\auth' ], function()
{
Route::group(array('prefix' => 'one'), function()
{
...
});

Route::group(array('prefix' => 'two'), function()
{
...
});

Route::get('dashboard', array('as' => 'home', 'uses' => 'DashboardController@index'));
});

Route::get('/', function()
{
if(!Sentry::check()) return Redirect::to('login');
elseif(Sentry::check()) return Redirect::to('dashboard');
});
});

Я уверен, что есть более элегантные решения, но я оставляю это здесь на всякий случай.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]