Почему нельзя войти в систему через laravel 5.8 с помощью драйвера сеанса базы данных в частной сети? - PullRequest
0 голосов
/ 07 октября 2019

Настройка:

  • Несколько реплик Laravel за балансировщиком нагрузки в частной сети
  • Реплики связываются с одним мастером, база данных которого находится в той же частной сети
  • Реплики настроены на использование драйвера сеанса базы данных
  • Мастер имеет соответствующую таблицу сеансов, созданную с помощью: php artisan session:table
  • Cloudflare запускает балансировщик нагрузки с помощью https и всех остальных (включаясам балансировщик нагрузки) http

Когда я пытаюсь войти в систему, я вижу записи, создаваемые в таблице сеансов (хотя столбец IP является балансировщиком нагрузки 10.0.0.0/24 из частной сети), XXX_session cookie также создается в браузере, но пользователь никогда не входит в систему и не возвращается к входу в систему.

Этого не происходит, если я вместо этого использую драйвер cookie.

Этот вопрос и ответ звучали многообещающе, поскольку в нем упоминалось редактирование конфигурации сеанса, но, к сожалению, laravel 5.8 обнаруживает все элементы прямо из .env и никогда не возвращается к этим вторым опциям по умолчанию, оставляя меня с вещами, которые я уже сделал в соответствии с документацией сеанса базы данных laravel.

Вопрос: Что не так, потому что laravel пишетчастный IP вместо реального пользователя IP в базу данных? если это так, как заставить его записать реальный IP-адрес пользователя, полученный от cloudflare?


Правки:

10/7/2019: изменениеIP-адрес моего внешнего IP-адреса в базе данных не регистрирует меня, даже если я миную балансировщик нагрузки.

1 Ответ

0 голосов
/ 07 октября 2019

Благодаря Mlewis на laracasts это было решено:

Одна возможность, если вы изменили запись id в таблице пользователей на uuids (строка) вместо int вам нужно будет изменить миграцию таблицы сеансов, чтобы отразить это в столбце user_id. Об этом я узнал на днях.

Если в вашей таблице пользователей столбец идентификатора имеет значение uuid(), то столбец таблицы сеанса user_id тоже должен быть uuid().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...