我正在实现会话管理,目前正在数据库中存储 4 种类型的信息:
- 用户身份
- session_id(哈希)
- 插入时间(用于超时)
- 持久性(如果用户有持久性 cookie)
用户可以使用不同的设备打开多个会话。如果用户注销,我怎么知道我应该删除哪些会话?
什么独特的信息通常与我已经获得的信息一起存储?IP 地址并不能真正起作用,因为它可以共享。我应该存储浏览器信息,但如果相同怎么办?
我正在实现会话管理,目前正在数据库中存储 4 种类型的信息:
用户可以使用不同的设备打开多个会话。如果用户注销,我怎么知道我应该删除哪些会话?
什么独特的信息通常与我已经获得的信息一起存储?IP 地址并不能真正起作用,因为它可以共享。我应该存储浏览器信息,但如果相同怎么办?
您应该只使用单个会话 ID/哈希来识别会话。
当用户登录时(例如使用用户名/密码),您将告诉他们他们的会话 id/hash 是什么。
当用户浏览时,他们会在每次页面加载时告诉您他们的会话 id/hash。这就是你如何知道它是一个现有的登录用户,而不是一些随机的新用户。
当用户尝试注销时,他们仍会告诉您他们的会话 ID/哈希。您可以使用它来查找和删除正确的单个会话。
您必须存储Last access time
Last Modify Time
Session 以计算 Session Timeout 的空闲时间。
要识别用户会话,您必须存储浏览器 ID。浏览器 ID 和用户 ID 映射将引导您确定您必须删除的用户会话。