c# - ASP.NET 唯一浏览器 ID
问题描述
我有一个包含多个 C# ASP.NET Web 窗体项目的解决方案。我想要一种识别给定浏览器的方法,以便每个网站都可以识别同一个浏览器。我需要从 C# 代码隐藏代码(而不是客户端代码,如 JavaScript)中执行此操作。我也不能使用会话,因为它不是跨网站共享的。我认为cookies也不是。
例如,如果用户登录到 Website1,然后在同一台计算机上使用相同的浏览器登录到 Website2,我希望能够识别它。但是,如果用户使用 Chrome 登录 Website1,然后使用 FireFox 登录 Website1(无论它是否在同一台计算机上),我也想检测到这一点。
如果有什么不同,我将使用 Azure 发布我的 Web 项目。所以所有网站都会有相似的域(例如 website1.azurewebsites.net 和 website2.azurewebsites.net)。
解决方案
如果您想在同一台计算机上使用同一浏览器跟踪某人,请使用 cookie。如果网站有不同的域,你需要聪明一点,因为现代浏览器有很多保护措施,可以防止他们看到的跟踪 cookie。一种选择是使用此处所述的隐藏插页式页面。
您的第二种情况,用户使用不同的浏览器访问同一站点,我建议存储用户代理字符串(请求标头之一)并将其添加到登录审核中,以便您可以建立给定用户使用的不同用户代理的集合. 有一些库可用于解析用户代理字符串和提取名称、版本、引擎等。
在这两种技术和一些业务逻辑之间,你应该得到你需要的东西。如果您希望我澄清其中的任何内容,请告诉我,我会提供更多详细信息。
推荐阅读
- javascript - Javascript - 我无法访问列表的内容
- node.js - Puppeteer:设置屏幕截图输出尺寸
- javascript - MongoTimeoutError: Server selection timed out after 30000 ms, 使用heroku部署
- https - 如何为 VS Code Live Server 扩展启用 HTTPS?
- php - 循环(行)查询中的另一个 SQL 查询
- java - 访问 Scala 变量:“未找到值:variable_name”问题
- javascript - Discord bot 改为返回空字符串
- r - 在 R 中按空格分割字符串
- angular - TS2570 错误协助:“Promise”类型上不存在属性“sendEmailVerification”
'。您是否忘记使用“等待”? - css - applu 节点模块 SCSS 文件仅适用于 Angular 7 中的特定页面