c# - 区分独特的设备连接

标签 c# javascript jquery asp.net

我正在运行 QR 寻宝游戏,用户将使用第一个扫描页面进行注册,然后查找其他 QR 代码。我想根据返回的人正在使用的设备(我将在注册期间将其作为 key 保存到云数据库 (Azure) 中)自动识别返回的人(扫描更多二维码)。

如何唯一标识设备?我熟悉根据获取 IP 地址和/或名称来识别设备,但只知道如何在单个域上执行此操作,如下所示:

//Get Client Machine name to restrict login
string[] computer_name = System.Net.Dns.GetHostEntry(Request.ServerVariables["remote_addr"]).HostName.Split(new Char[] { '.' });
string ecn = System.Environment.MachineName;
string strClientName = computer_name[0].ToString();

然后我比较 strClientName(这在我们的域中是唯一的)。

考虑到客户端可以从任何网络、域等进行连接,有什么好的方法可以做到这一点?我考虑过使用 MAC 地址之类的东西,但我没有看到一个好的方法来获得它,并且不确定它是否总是唯一的。从技术上讲,我不在乎这是否 100% 准确(因为该小组可能不会超过 100 人),但我希望最终能够扩展。

我更喜欢在 Page_Load 上运行 C# 解决方案,但也可以实现 javascript 或 jQuery 解决方案。我预计大部分用户会在 iPhone 和 Droid 上使用各种随机 QR 应用程序,以及一些 win 手机。二维码会将他们指向运行我的 .NET 项目的网址。

最佳答案

这个答案假设以下过程。用户启动二维码扫描应用程序(可能在手机或平板电脑上,但无论何种设备)。他们扫描 QR 码,然后 QR 应用程序在本地设备的浏览器中加载该 URL。每个二维码都会进入您的同一个域(不同的 URL,但都在同一个域中)。

在这个世界上,您可以使用 cookie 来唯一标识每个设备。当您第一次看到来自任何没有关联特定 cookie 的设备的点击时,您的服务器可以创建一个唯一的 cookie 并将其与 Web 请求一起返回。如果您为 cookie 提供 '/' 路径,则该设备 future 的所有 QR 命中都将返回相同的 cookie,因此它可以作为您的设备标识符。这种类型的标识符将识别浏览器,并且独立于设备移动到不同位置或网络时的任何网络变化。

创建唯一 Cookie 值的一个简单方法是根据时间戳和随机数创建一个字符串。

可以随时通过清除设备上的 cookie 来重新初始化设备,或者您可以制作一个网页,提供一个按钮来清除设备上的特定 cookie。

关于c# - 区分独特的设备连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23172039/

相关文章:

javascript - 在 puppeteer 的所有页面上渲染标题

javascript - 使用 null 值填充 FormGroup 并

javascript - this._callback.apply 不是函数! Node js Mysql错误

javascript - 如何通过图像按钮触发日历弹出?

c# - 如何使用 itextsharp 将 html 页面转换为带有 css 的 pdf?

c# - Json空数组在MVC中反序列化为null

jquery - CSS 选择器 :contains() doesn't work with line breaks

php - 'events'的逐小时时间线显示 - mysql php

c# - VS2015 XAML 设计器总是 System.UnauthorizedAccessException

c# - WPF UserControl 无法在窗体外部绑定(bind)