在laravel5.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
字段as(在本例中) UkPhMBTVq73MX8KaS8CZy0vDG9wtDSNvSYhsRuvL
在用户电子邮件表中,使用 user_id
的 62
.
但是,当我检查 sessions
表中的条目 user_id = 62
,的 id
字段设置为 DuQq6JqcFL2HiGGLGJQ9hLNeXaxUAkdYTlJEX1Ag
.
在我看来,会话id正在立即更改,同时将条目保存到 user_emails
table。这也意味着我无法在 user_emails.session_id
以及 sessions.id
因为它抛出了一个外键约束问题。
这是故意的行为吗?我希望sessions表为每个新会话创建一个新行,而不是覆盖现有行。
希望有人能解释一下。如果能够将活动与 sessions
供将来分析。在这种情况下,我的逻辑是检查请求的来源,如果用户在收到欢迎电子邮件时将注册报告为未经授权。
当然,我将会话驱动程序设置为database,这样laravel会自动存储所有会话数据。
1条答案
按热度按时间92vpleto1#
对于那些找到这一页的人。我发现这样做的原因是我在将信息保存到数据库后立即用新的电子邮件登录用户。根据laravel文档,会话id会随着每次登录而自动更改和更新-出于安全原因。
看起来我需要查看日志记录包来跟踪会话中的活动,在这种情况下只存储ip地址是最好的。