gpt4 book ai didi

mysql - Laravel session ID 在数据库中不匹配

转载 作者:行者123 更新时间:2023-11-29 17:36:09 25 4
gpt4 key购买 nike

我有一个关于在 Laravel 5.6 中将数据库表链接到 session 表的问题。

我想将 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();

这会将 user_emails 表中的 session_id 字段保存为(在此示例中)UkPhMBTVq73MX8KaS8CZy0vDG9wtDSNvSYhsRuvLuser_id62 .

但是,当我在 sessions 表中检查 user_id = 62 的条目时,id 字段设置为 DuQq6JqcFL2HiGGLGJQ9hLNeXaxUAkdYTlJEX1Ag .

在我看来,在将条目保存到 user_emails 表时, session ID 立即发生变化。这也意味着我无法在 user_emails.session_idsessions.id 之间创建外键,因为它会引发外键约束问题。

这是预期的行为吗?我预计 session 表将为每个新 session 创建一个新行,而不是覆盖现有行。

希望有人能对此有所启发。如果能够将事件链接到 session 以供将来分析,那就太好了。在这种情况下,我的逻辑是检查请求的来源,如果用户在收到欢迎电子邮件时将注册报告为未经授权。

我当然将 session 驱动程序设置为数据库,以便 Laravel 自动存储我的所有 session 数据。

最佳答案

对于那些找到此页面的人。我发现原因是我在将信息保存到数据库后立即使用新电子邮件登录用户。根据 Laravel 文档,出于安全原因,每次登录时 session ID 都会自动更改和更新。

看起来我需要查看日志包来跟踪 session 事件,在这种情况下最好只存储 IP 地址。

关于mysql - Laravel session ID 在数据库中不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50269688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com