Angularjs 为每台计算机创建唯一的id,并在没有用户登录时将其用作标识符

Angularjs 为每台计算机创建唯一的id,并在没有用户登录时将其用作标识符,angularjs,django,authentication,local-storage,session-cookies,Angularjs,Django,Authentication,Local Storage,Session Cookies,我正在尝试创建一个网络应用程序,可以提交一些文章的评级。后端是django,前端是angularjs 评级是具有以下属性的模型:评级者、价值和物品 我想让匿名用户提交评级,在这种情况下,评级者是空的,但是评级对象附加了一个sessionid来标识评级的来源 目前,我正在使用django的会话模块,并将session\u key属性附加到每个评级对象。但是,如果有效用户登录和注销,则会话会发生更改 我想要的是为创建评级的每台计算机都有一个唯一的标识符,并将此id附加到对象。因此,只要没有用户登录,

我正在尝试创建一个网络应用程序,可以提交一些文章的评级。后端是django,前端是angularjs

评级是具有以下属性的模型:评级者、价值和物品

我想让匿名用户提交评级,在这种情况下,评级者是空的,但是评级对象附加了一个sessionid来标识评级的来源

目前,我正在使用django的会话模块,并将
session\u key
属性附加到每个评级对象。但是,如果有效用户登录和注销,则会话会发生更改

我想要的是为创建评级的每台计算机都有一个唯一的标识符,并将此id附加到对象。因此,只要没有用户登录,由一台计算机创建的对象,无论刷新、重新启动、登录+注销等,都共享相同的标识符

通过这样做,我的最终目标是允许匿名用户使用应用程序,就像他/她总是登录一样。换句话说,当没有真正的用户登录时,每台计算机都是唯一的“隐式用户”

我的问题是,有没有办法做到这一点? 提前谢谢你

本地存储 匿名用户无法被完美跟踪。 在我看来,您最好使用
localStorage

localStorage.setItem('anonymous-key', 'some-key-you-generated');
然后,每当没有用户登录时:

var anonymousKey = localStorage.getItem('anonymous-key');
坚持不懈 在用户明确清除本地存储之前,本地存储将一直保存。出于安全原因,某些浏览器可能会在数据中添加过期日期

另请参见:

LocalStorage 匿名用户无法被完美跟踪。 在我看来,您最好使用
localStorage

localStorage.setItem('anonymous-key', 'some-key-you-generated');
然后,每当没有用户登录时:

var anonymousKey = localStorage.getItem('anonymous-key');
坚持不懈 在用户明确清除本地存储之前,本地存储将一直保存。出于安全原因,某些浏览器可能会在数据中添加过期日期


另请参见:

我不知道。另外,不要保留sessionid。一旦会议结束,它就一文不值了。您最好执行类似if request.user:#使用用户信息保存其他:不使用保存如何定义唯一的计算机?按IP-如果多个人使用同一IP,或者他们更改了IP,该怎么办?按MAC地址-同一问题?@Obj3ctiv3_c88当有用户登录时,我正在保存用户信息。但问题是如何识别匿名用户创建的对象。你不能跟踪匿名用户,我的意思是你可以在会话期间跟踪,但一旦结束,你就不能跟踪。您只需将用户设置为伞形“来宾”用户或将其设置为无。我不知道这一点。另外,不要保留sessionid。一旦会议结束,它就一文不值了。您最好执行类似if request.user:#使用用户信息保存其他:不使用保存如何定义唯一的计算机?按IP-如果多个人使用同一IP,或者他们更改了IP,该怎么办?按MAC地址-同一问题?@Obj3ctiv3_c88当有用户登录时,我正在保存用户信息。但问题是如何识别匿名用户创建的对象。你不能跟踪匿名用户,我的意思是你可以在会话期间跟踪,但一旦结束,你就不能跟踪。您只需将用户设置为伞形“来宾”用户或将其设置为无。