我正在进行QR清道夫搜索,用户将在第一个扫描页面注册,然后找到其他QR码。我想根据他们正在使用的设备自动识别返回的人(扫描更多的QR码)(我将在注册时将其保存为云数据库(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和机器人上使用各种随机QR应用程序,以及几款获胜手机。 QR码会将它们指向运行我的.NET项目的网址。
答案 0 :(得分:2)
此答案假定以下过程。用户启动QR码扫描应用程序(可能在手机或平板电脑上,但它与什么类型的设备无关)。他们扫描QR码和QR应用程序然后在本地设备的浏览器中加载该URL。每个QR码都会转到您的同一个域(不同的网址,但都位于同一个域中)。
在这个世界中,您可以使用cookie来唯一标识每个设备。当您第一次看到来自没有与之关联的特定cookie的任何设备的命中时,您的服务器可以为唯一的cookie注入硬币并将其与Web请求一起返回。如果您为cookie提供'/'
的路径,那么此设备的所有未来QR点击将返回相同的Cookie,因此它可以是您的设备标识符。当设备移动到不同的位置或网络时,这种类型的标识符将识别浏览器并独立于任何网络更改。
创建唯一cookie值的一种简单方法是从时间戳和随机数组合创建一个字符串。
可以通过清除设备上的cookie随时重新初始化设备,也可以创建一个网页,提供按钮以清除特定的cookie。