6

我正在构建一个 webapp,我可以使用一个解决方案来唯一地识别用户的计算机。

这样做的原因是,一旦用户登录到应用程序,他/她可以启动与应用程序相关的多个会话(存储在 mySQL 中) - 但是,会话应该只能从会话所在的计算机获得发起了。

我不能使用 cookie,因为应用程序应该允许用户关闭浏览器、重新启动计算机等,而不会有任何丢失用户会话的风险。

起初我以为我可以得到类似主板序列号的东西。Naaah,不会发生的。

然后我想到了根据用户远程地址 + MAC 地址生成一个 MD5 哈希,直到我发现这只能使用带有 ActiveX 的旧版本的 IE。

然后我开始想,如果所有 Chrome 安装都有某种我可以使用的唯一浏览器 ID?... 没有找到任何有用的东西。

关于如何根据用户计算机生成唯一字符串的任何好主意?

4

2 回答 2

9

您将不得不放松您的限制:即使使用浏览器数字打印,您也无法保证不更改且不丢失 UID。

我通常的解决方案(效果很好但不能保证)是从服务器向浏览器发送一个 UID 并将其存储在localstorage中。请注意,精通计算机的用户可以删除或更改它。但如果用户不是你的敌人,这很好用。

喜欢 localstorage 而不是 cookie 的原因是:

  • 没有过期
  • 没有工具可以“清理”它们,因为它们从一开始就是原始绑定的,因此没有 cookie 侵犯隐私的声誉
  • 当然,对于 javascript 应用程序来说,界面更干净、更健全
于 2012-11-13T07:45:49.680 回答
4

我不能使用 cookie,因为应用程序应该允许用户关闭浏览器、重新启动计算机等,而不会有任何丢失用户会话的风险。

计算重启时 cookie 不会丢失。您可以使用 cookie。

于 2012-11-13T07:44:54.660 回答