【问题标题】:bypass service ID from App pool to determine actual username of user ASP.NET C#绕过应用程序池中的服务 ID 以确定用户 ASP.NET C# 的实际用户名
【发布时间】:2014-10-01 19:55:51
【问题描述】:

我有一个网站,它使用带有服务 ID 的应用程序池连接到数据库。我希望能够在网页上填充一个文本框,显示他们的实际 Windows 登录名,而不是与应用程序池关联的服务 ID。我想要这个,所以我可以使用这些信息对网格视图进行一些过滤,该网格视图根据用户名显示数据库中的一些数据。目前我已经尝试了几种不同的方法。

Environment.UserName

这将获取用于访问数据库的服务 ID。

System.Security.Principal.WindowsIdentity.GetCurrent().Name;

这也让我获得了用于访问数据库的服务 ID。

//Both of these return the same results described below.
HttpContext.Current.User.Identity.Name;
//and
System.Threading.Thread.CurrentPrincipal.Identity.Name;

这两个有点奇怪。当我通过 vs2010 进行调试时,他们得到了我的用户名,但是当我将文件复制到服务器时,这将在服务器上运行并使用应用程序池运行它,它什么也得不到。我已将其设置为在 home.aspx 页面上的文本框中显示。

任何对此的帮助将不胜感激,因为我到处寻找并且找不到任何特定于我的情况的信息。

提前致谢!!

当前使用的实际代码:(从服务器运行时不返回任何内容)

if (!IsPostBack)
        {
            string filterName = HttpContext.Current.User.Identity.Name;
            IDFilterTextBox.Text = filterName;
        }

已编辑:包含我尝试过的新方法。

【问题讨论】:

    标签: asp.net c#-4.0 iis-7 windows-server-2008-r2 application-pool


    【解决方案1】:

    我认为你正在尝试的事情是不可能的。它在调试时看到您的原因是因为 VS 正在运行该站点,并且在您的用户名下运行。

    当您将应用程序部署到服务器时,在那里运行的代码无法访问用户的机器 - 因此无法找到用户名。

    您可以在用户的​​机器上运行一些 Javascript,但我认为不可能从中获取本地机器用户名。

    更新:好的,如果用户以某种方式登录到该站点,那就不同了——我误解了这个问题。您可以尝试从以下位置获取它:

    System.Threading.Thread.CurrentPrincipal.Identity.Name

    【讨论】:

    • 那为什么要使用HttpContext呢?在我看来,它会工作得很好......我不明白为什么我不能从中获取这些信息。顺便说一下,这是一个内部网站。它仅适用于我公司的用户。他们必须通过活动目录访问,这最终是我正在寻找的用户名。如果有人有其他方法可以得到这个,我将不胜感激!!!
    • 没有意识到用户已登录到您的网站。查看我的更新。
    • 尝试了 System.Threading.Thread.CurrentPrincipal.Identity.Name 方式,当我从服务器运行它时它仍然返回一个空字符串。必须有一种方法可以在服务 ID 进行身份验证之前获取用户的用户名。我真的坚持这一点,也愿意接受其他方法。
    • 很抱歉,但我真的认为该网站不了解用户。是的,您可能必须通过 AD 登录才能访问它,但这可能只是在网络上打开一条路由,以便您访问该 url。我会和你的网络人员核实一下。
    【解决方案2】:

    结果证明这是使用我之前展示的一种方法进行的简单修复。

    string UserName = System.Threading.Thread.CurrentPrincipal.Identity.Name;
    

    棘手的部分在于 IIS 配置。一旦我们发现匿名身份验证被禁用会强制用户登录 ID 出现,它就可以正常工作了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-23
      • 1970-01-01
      • 1970-01-01
      • 2017-02-06
      相关资源
      最近更新 更多