Идентификатор сеанса Laravel не совпадает в базе данных - PullRequest
0 голосов
/ 10 мая 2018

У меня есть вопрос о связывании моих таблиц базы данных с моей сессионной таблицей в Laravel 5.6.

Я хотел связать тех, кто когда-либо создает адрес электронной почты в таблице user_emails, с таблицей session, чтобы в будущем я мог получить информацию об этой транзакции - например, IP-адрес.

Я использую следующий код:

$email = new UserEmail();
$email->user_id = $user->id;
$email->address = $request->email;
$email->token = str_random(30);
$email->session_id = session()->getId();
$email->save();

Это сохранит поле session_id как (в этом примере) UkPhMBTVq73MX8KaS8CZy0vDG9wtDSNvSYhsRuvL внутри таблицы user_emails с user_id из 62.

Однако, когда я проверяю таблицу sessions для записи с user_id = 62, поле id устанавливается на DuQq6JqcFL2HiGGLGJQ9hLNeXaxUAkdYTlJEX1Ag.

Мне кажется, что идентификатор сеанса изменяется немедленно при сохранении записи в таблицу user_emails. Это также означает, что я не могу создать внешний ключ между user_emails.session_id и sessions.id, поскольку это вызывает проблему ограничения внешнего ключа.

Это предполагаемое поведение? Я ожидал, что таблица сеансов создаст новую строку для каждого нового сеанса, в отличие от перезаписи существующей строки.

Надеюсь, кто-нибудь сможет пролить свет на это. Было бы неплохо иметь возможность связать активность с sessions для дальнейшего анализа. Моя логика в этом случае будет заключаться в том, чтобы проверить, откуда поступил запрос, если пользователь сообщит о том, что регистрация не авторизована, когда он получит приветственное письмо.

У меня, конечно, драйвер сеанса установлен в базу данных, так что Laravel автоматически сохраняет все мои данные сеанса.

1 Ответ

0 голосов
/ 12 мая 2018

Для тех, кто находит эту страницу.Я обнаружил, что причиной этого было то, что я регистрировал пользователя с новым электронным письмом сразу после сохранения информации в базе данных.Согласно документации Laravel, идентификатор сеанса автоматически изменяется и обновляется при каждом входе в систему - в целях безопасности.

Похоже, мне нужно искать пакет журналов для отслеживания активности во время сеансов, и в этом случае лучше всего будет просто сохранить IP-адрес.

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