C#中的唯一客户端ID

时间:2015-10-31 17:32:16

标签: c# asp.net

情况:

我正在创建某种类型的网站,让用户对帖子发表评论和喜欢。有两种类型的用户,用户名和密码(类型1)和访客(类型2)。

对于类型1,将存储数据,其中密钥是其登录凭据。通过这种方式,用户不能多次喜欢内容(下次加载页面时,他们会看到“不喜欢”按钮)

类型2,我使用IP来区分用户。但是,IP可以随时间变化(因为通常情况下,IP是动态的)。

注意:需要使用C#,ASP .Net实现。

  • 我无法使用会话变量,因为它会在关闭浏览器后被销毁。
  • 关于cookie,现在cookie很容易被删除,这将是我最糟糕的实施方式(如果没有其他的话)。

问题:

有没有办法为客户端(PC /智能设备)生成唯一ID,所以如果你第一次使用PC查看页面上的帖子X,你喜欢它,下次(即使你关闭你的浏览器)页面可以识别您,然后将按钮更改为“不同”。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

有两种处理方法。

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

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

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

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

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

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

希望我帮助过:)