Asp.net “你怎么能这样?”;足迹“;使用HttpContext的防火墙后面的特定计算机?

Asp.net “你怎么能这样?”;足迹“;使用HttpContext的防火墙后面的特定计算机?,asp.net,footprint,server-variables,Asp.net,Footprint,Server Variables,我需要能够使用HttpContext中可用的任何东西在ASP.Net中识别一个系统和另一个系统。我曾尝试使用许多可用的服务器变量,但系统通常是从映像构建的驱动器配置的。因此,由于防火墙,他们的IP地址是相同的,他们的所有服务器变量(browseragent、logonuser)都是相同的,所以我需要找到其他东西来区分不同的机器。由于该站点使用formsauthentication进行保护,因此必须关闭Windows集成身份验证(否则我将有权访问不同的登录用户值) 我没有嫁给HttpContext

我需要能够使用HttpContext中可用的任何东西在ASP.Net中识别一个系统和另一个系统。我曾尝试使用许多可用的服务器变量,但系统通常是从映像构建的驱动器配置的。因此,由于防火墙,他们的IP地址是相同的,他们的所有服务器变量(browseragent、logonuser)都是相同的,所以我需要找到其他东西来区分不同的机器。由于该站点使用formsauthentication进行保护,因此必须关闭Windows集成身份验证(否则我将有权访问不同的登录用户值)

我没有嫁给HttpContext,但在我看来,它似乎是使用代码检索可识别用户信息的唯一方法

编辑/更新:

@罗伯特·哈维(Robert Harvey)提供了两个搜索链接,这些链接带来了很多结果,其中大多数由于某种原因不符合我的要求(尽管仍然有一些我以前没有想到的好主意)。首先,我需要能够识别是否有人在防火墙后切换了机器。因此,我将提供一些代码结构细节,这些细节将阐明为什么某些事情对我不起作用

  • 会话/cookie是持久的 直到午夜(做出决定) 在我头上,我和它一起生活)
  • 经过身份验证的用户不使用 MembershipUser类。(即使 没有,MembershipUser.IsOnline将 只给我一个 以前登录的用户)
  • 用户是 已知要删除Cookie或关闭 不注销的浏览器
  • 我需要 一些可以说明问题的标准 机器不一定是从另一台机器来的 防止并发登录,但至少 至少要确定他们的身份

  • 在用户登录时生成guid,并将其存储在cookie中,并对照数据库中的用户记录

    如果不匹配,请在每个请求上进行比较,因为您有一个并发登录


    要明确的是,此cookie是一个类似于会话cookie的表单身份验证,如果他们删除它,他们无论如何都会注销。

    这是一个自我回答。我遇到过,虽然它没有说明具体的操作方法,它确实表明,通过这些项目的组合,可以以最小的错误幅度唯一地标识特定系统。

    在我看来,用户第一次从该计算机访问站点时,您可以在该计算机上删除带有GUID的cookie。当然,用户可以随时删除cookies。此标识启用了什么样的功能?你所说的“足迹”是什么意思?@Robert Harvey-可能会阻止单个用户使用多台机器同时登录站点,如果仍然有可用的活动会话,它还可以帮助识别用户何时切换了机器。@PhilPursglove-识别可以附加到用户身份验证的机器的一些基本公共特征。用户X使用PC Y登录。用户X然后登录PC Z。我需要识别此状态。目前,如果两台机器具有相同的配置并且位于防火墙后面,则它们看起来与服务器相同。因此,这并不能解决机器本身的标识问题。此解决方案将每个登录视为单独的机器登录。我的问题特别要求识别机器。如果用户支持NAT,这是不可能的,如果用户使用不同的浏览器,要实现您的要求也必须有效。有趣的问题我会想得更多。如果你能简化这个问题,我可以帮你,如果你只想跟踪同一台机器,相同的登录,相同的浏览器,这是可以做到的。只要有一个返回guid的页面,并将该页面的缓存设置为一年,同样,这与cookie没有太大区别,但它会一直保持到用户删除缓存为止。除此之外,使用cookie做同样的事情是不可能的。