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,你会喜欢它,下次(即使在你关闭浏览器之后)页面可以识别你,然后将按钮更改为"不同"。

C#中的唯一客户端ID

没有可靠的方法可以做到这一点。例如,如果用户在笔记本电脑上打开网站,然后在手机上打开,然后在平板电脑上打开,该怎么办?您无法阻止这些设备中的每一个都注册为不同的访客。唯一的解决方案是让人们登录并只允许匿名访客进行读取访问。

有两种处理方法

A)获取唯一设备标识符(UDID)并将其存储在服务器上。

B) 生成通用唯一标识符(UUID)并将其存储在设备和服务器上。

使用第一种方法,你不在设备上存储UUID,所以你既节省了空间(相当于字节的数据,但仍然如此),用户在不重新安装操作系统的情况下无法更改ID。但是,它将高度依赖于平台。

对于第二种方法,您使用System.Guid.newGuid()方法,并将生成的UUID保存到浏览器上的cookie中。

然后,您要么从cookie中读取数据,要么获取设备UDID并将其与数据库进行比较。

但是,这不会阻止用户从不同的设备访问网站。最好的方法是要求用户登录(但请注意密码安全,因为人们通常在不同服务中使用相同的密码)。

希望我能帮上忙:)