【问题标题】:ASP.NET Unique Browser IDASP.NET 唯一浏览器 ID
【发布时间】:2018-07-05 14:00:57
【问题描述】:

我有一个包含多个 C# ASP.NET Web 窗体项目的解决方案。我想要一种识别给定浏览器的方法,以便每个网站都可以识别同一个浏览器。我需要从 C# 代码隐藏代码(而不是客户端代码,如 JavaScript)中执行此操作。我也不能使用会话,因为它不是跨网站共享的。我认为 cookie 也不是。

例如,如果用户登录到 Website1,然后在同一台计算机上使用相同的浏览器登录到 Website2,我希望能够识别它。但是,如果用户使用 Chrome 登录 Website1,然后使用 FireFox 登录 Website1(无论它是否在同一台计算机上),我也想检测到这一点。

如果有什么不同,我将使用 Azure 发布我的 Web 项目。所以所有网站都会有相似的域(例如 website1.azurewebsites.net 和 website2.azurewebsites.net)。

【问题讨论】:

  • 为什么要这样做? cookie 会起作用吗?
  • 是的,cookie 会起作用。目的本质上是为了让我可以查看每个网站上是否是同一个人,以便拥有一些共享数据(共享设置、共享登录等)并跟踪给定用户跨网站的活动。

标签: c# asp.net session browser webforms


【解决方案1】:

如果您想在同一台计算机上使用同一浏览器跟踪某人,请使用 cookie。如果网站有不同的域,你需要很聪明,因为现代浏览器有很多保护措施,可以防止他们看到的跟踪 cookie。一种选择是使用hidden interstitial page as described here

您的第二种情况,用户使用不同的浏览器访问同一站点,我建议存储用户代理字符串(请求标头之一)并将其添加到登录审核中,以便您可以建立一组不同的用户代理给定的用户。有一些库可用于解析用户代理字符串并提取名称、版本、引擎等。

在这两种技术和一些业务逻辑之间,你应该得到你需要的东西。如果您希望我澄清这些,请告诉我,我会提供更多详细信息。

【讨论】:

  • 我查看了那个链接。这似乎只是一个您通过 iFrame 将一个站点托管在另一个站点的“内部”(因为没有更好的词)。这不是我在这里做的。另外,我不关心同一个用户,但使用不同的浏览器。这对我来说没什么大不了的。通常情况下,用户会使用同一个浏览器来完成他们所做的所有事情,所以这是更重要的情况。
猜你喜欢
  • 2011-06-23
  • 2014-08-21
  • 1970-01-01
  • 1970-01-01
  • 2015-10-19
  • 1970-01-01
  • 1970-01-01
  • 2014-02-27
  • 1970-01-01
相关资源
最近更新 更多