如何为 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 - 你如何为每个'用户'分配'反馈'到一个'任务'? (多对一)
如何为 IEnumerable 中的每个项目打开一个唯一的模式