我正在尝试使用 cookie 实现“记住我”系统,该系统将跨浏览器记住用户,这意味着如果用户使用浏览器 A 登录网站并选中“记住我”,然后使用“记住我”登录到浏览器 B ,无论他使用哪种浏览器,他都会继续自动登录。(在浏览器 B 中选中“记住我”不会破坏他在浏览器 A 中的持久登录)。
为此,我设置了我的数据库,以便可以将多个密钥与用户 ID 一起存储。当用户登录我的网站时,会检查 cookie 的值。如果在数据库中找到该值,则为用户分配一个新的 cookie,并且更新数据库中的该 cookie 键条目以匹配。其他键保持不变,不影响其他浏览器的登录持久性。当用户手动注销时,检查cookie,删除数据库中的相应条目,然后删除cookie。
当用户手动删除他的 cookie 时,问题就出现了。如果用户这样做,我将无法删除数据库中的相应条目。它只会成为我数据库中的永久条目。当我不尝试支持跨浏览器“记住我”时,这不是问题,但通过允许存储多个 cookie 密钥已成为问题。
有什么办法可以解决/避免这种情况吗?
有大量关于持久登录的信息,但似乎从未涵盖跨浏览器的持久登录,因此任何帮助都会很棒。(也可以随意批评我的方法和任何安全问题。当我只允许每个用户“记住我”时,它似乎更安全,但跨浏览器的持久登录似乎是用户想要的功能)。
我正在使用 MySQL 和 PHP。