如何为 django 中的每个匿名用户提供一些唯一的 id

Posted

技术标签:

【中文标题】如何为 django 中的每个匿名用户提供一些唯一的 id【英文标题】:how to give some unique id to each anonymous user in django 【发布时间】:2015-07-29 15:18:31 【问题描述】:

我想创建一个表(postgres)来存储有关哪些用户查看了哪些项目的数据。经过身份验证的用户没问题,但我如何区分一个匿名用户和另一个匿名用户?这是分析目的所必需的。

也许将他们的 IP 地址存储为唯一 ID?我该怎么做?

【问题讨论】:

【参考方案1】:

我认为你应该使用 cookie。

当一个未通过身份验证的用户发出请求时,查找一个名为whatever(在本例中为“nonuserid”)的cookie。如果 cookie 不存在,则表示它是新用户,因此您应该使用随机 id 设置 cookie。如果存在,您可以使用其中的 id 来识别匿名用户。

【讨论】:

谢谢你,我试试看告诉你【参考方案2】:

选项 1

使用 IP 地址。结帐this answer。无需将 IP 写入会话,因为您始终可以在收到请求时获取客户端 IP。

选项 2

uuid生成唯一ID,正如doc所说。并在会话中使用给定名称设置 ID,假设它是 USER_ID

当你收到用户的请求时,检查USER_ID 是否在会话中。如果是这样,读取它的值并将记录写入数据库,如user id visit page X。如果没有,则生成并设置。

【讨论】:

使用 IP 地址是个坏主意。一些 isp 使用多个代理对流量进行负载平衡,这意味着单个会话可以有多个 IP 地址。其次,很多(千)客户端共享同一个IP地址是很常见的。

以上是关于如何为 django 中的每个匿名用户提供一些唯一的 id的主要内容,如果未能解决你的问题,请参考以下文章

Django - 你如何为每个'用户'分配'反馈'到一个'任务'? (多对一)

如何为每个用户提供 Firebase 存储中的特定文件夹

如何为 IEnumerable 中的每个项目打开一个唯一的模式

如何为列中的每个唯一值获取数据框中的项目数[重复]

如何为数组中的每个创建一个具有唯一图像和选择器的自定义 UIButton?

如何为 django 可重用应用程序启动测试?