是否有好的库或逻辑来创建这个:用于用户识别的持久(几年)会话。像 Gmail 和 Facebook 中的会话管理将是奖励。
3 回答
您需要设置 cookie 和会话的组合。请记住,会话只持续到浏览器关闭,甚至最坏的情况下,直到 2 个请求之间的时间超过服务器施加的时间限制。
首先,为了使这一切成为可能,您必须使用 cookie。为此,请注意,如果用户更改浏览器或刷新他的 cookie,永久会话将停止工作。
第二件事是在 cookie 中创建一个哈希值,该哈希值只能从该位置用于该用户。例如:使用REMOTE_ADDR的哈希值和数据库中的用户 ID。因此,它不会成为安全威胁,因为除了没有什么作用的哈希之外,没有任何信息可以从 cookie 中推断出来……目前。
第三,当用户发送请求时,检查该 cookie 是否存在并使用哈希值与数据库中的相同哈希值进行比较。(您可以将此散列放在用户表中,但我建议创建另一个表,以便用户可以从多个地方通用登录)数据库中的此散列将是检索您要登录的帐户的关键。
第四,当您找到要登录的帐户时,请记住更新 cookie 中的哈希值,显然此时使用 php 中的SESSION系统可以继续正常运行您的应用程序。
这种方法已被许多基于“记住我”的网站证明是成功的......
您混淆了会话和 cookie。会话是按定义结束的事物。
虽然 cookie 可能会永远存在。
因此,如果收到 id,设置一个 cookie 并启动另一个会话。
登录用户时,将会话 cookie 过期时间设置为 +10 年或任何您想要的时间。