C#中的唯一客户端ID
本文关键字:客户端 ID 唯一 | 更新日期: 2023-09-27 18:19:58
情况:
我正在创建某种网站,让用户对帖子发表评论和点赞。有两种类型的用户,具有用户名和密码的用户(类型1)和访客(类型2)。
对于类型1,数据将与密钥一起存储,这些密钥是它们的登录凭据。这样一来,用户就不能多次喜欢某个内容(下次加载页面时,他们会看到"不同"按钮)
类型2,我使用IP来区分用户。但是,IP是随时间变化的(因为通常情况下,IP是动态的)。
注意:需要使用C#、ASP.Net.实现
- 我不能使用会话变量,因为它将在关闭浏览器后被销毁
- 关于cookie,cookie现在很容易被删除,这将是我最糟糕的实现方式(以防没有其他方式)
问题:
有没有任何方法可以为客户端(PC/智能设备)生成唯一的id,所以如果你第一次使用PC在页面上查看帖子X,你会喜欢它,下次(即使在你关闭浏览器之后)页面可以识别你,然后将按钮更改为"不同"。
没有可靠的方法可以做到这一点。例如,如果用户在笔记本电脑上打开网站,然后在手机上打开,然后在平板电脑上打开,该怎么办?您无法阻止这些设备中的每一个都注册为不同的访客。唯一的解决方案是让人们登录并只允许匿名访客进行读取访问。
有两种处理方法
A)获取唯一设备标识符(UDID)并将其存储在服务器上。
B) 生成通用唯一标识符(UUID)并将其存储在设备和服务器上。
使用第一种方法,你不在设备上存储UUID,所以你既节省了空间(相当于字节的数据,但仍然如此),用户在不重新安装操作系统的情况下无法更改ID。但是,它将高度依赖于平台。
对于第二种方法,您使用System.Guid.newGuid()
方法,并将生成的UUID保存到浏览器上的cookie中。
然后,您要么从cookie中读取数据,要么获取设备UDID并将其与数据库进行比较。
但是,这不会阻止用户从不同的设备访问网站。最好的方法是要求用户登录(但请注意密码安全,因为人们通常在不同服务中使用相同的密码)。
希望我能帮上忙:)