Laravel 4.2 将用户 ID 存储在会话数据中的啥位置?

Posted

技术标签:

【中文标题】Laravel 4.2 将用户 ID 存储在会话数据中的啥位置?【英文标题】:Where does Laravel 4.2 store the user ID within the session data?Laravel 4.2 将用户 ID 存储在会话数据中的什么位置? 【发布时间】:2015-03-19 05:39:21 【问题描述】:

由于时间限制,我正试图围绕 Laravel 如何处理会话数据而不深入研究代码。

似乎存储在 cookie 中的会话 ID(默认为“laravel_session”)是加密的,因为它是一个不同的、比我打印 Session::getId() 的值时得到的值长得多的值

所以我假设 Laravel 在删除 cookie 之前加密了这个值,然后在每次需要会话数据时解密这个值以进行会话数据查找。

所以我想我的第一个问题是:

1.为什么会话 ID 会被这样混淆?我假设这是出于安全目的?

其次,从磁盘中提取实际会话数据后,我在实际会话数据中看不到“user_id”(或类似措辞)键。事实上,除了 CSRF _token 值之外,我唯一看到的是一些条目,例如 'login_42e5d2c566bd0811218f0cf078b76bfd' = 1。

2。这些数据负责什么?

3。有人可以简要介绍一下 Laravel 如何将会话数据与特定用户 ID 相关联吗?

【问题讨论】:

【参考方案1】:

您为什么要深入研究会话以获取user ID?您可以在不登录的情况下进行会话 - 所以user ID 并不总是意味着什么。

如果您想要当前登录的用户 - 那么您应该使用 Auth::user()->id

【讨论】:

感谢您的回复 :) 是的,我知道会话可以在没有登录用户的情况下存在。话虽如此,当用户登录时,他们的会话数据以某种方式与他们的记录相关联,我想知道它是如何工作的。我正在尝试更多地了解 Laravel 如何在幕后工作。如果你能回答我提出的问题,我会选择你的答案。再次感谢您的回复。

以上是关于Laravel 4.2 将用户 ID 存储在会话数据中的啥位置?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 存储用户会话的位置

Laravel 中的单会话登录

laravel 4.2在重定向时重新生成会话

Laravel 4.2中的会话不起作用

存储存储在会话 laravel 中的值

Laravel 如何在会话 Laravel 中存储额外的数据/值