在ASP.NET中获取域用户ID

本文关键字:用户 ID 获取 ASP NET | 更新日期: 2023-09-27 18:29:09

我有一个ASP.NET应用程序,其中一名员工登录到Windows,然后他们必须从一长串姓名中选择自己的姓名并登录到该应用程序。

我想做的是,一旦员工打开应用程序,就会从下拉框中选择他们的姓名。

我相信,如果我能在页面加载时获得Windows用户Id,我就可以让我的代码根据登录的Windows用户来选择用户。

问题是,如何获取当前登录C#Asp.net的Windows用户Id?任何想法。

在ASP.NET中获取域用户ID

试试这个:-

System.Web.HttpContext.Current.User.Identity.Name

还可以查看此论坛。

更新:-

1) 请检查您是否已在IIS 中禁用匿名模式

2) 还要检查您是否已将应用程序设置为验证用户详细信息,如下所示:-

 <authentication mode="Windows"/> 
    <authorization> 
       <allow users="*"/>
    </authorization>

或者像这样:-

  <authentication mode="Windows" /> 
     <authorization> 
        <deny users="?"/> 
     </authorization>

3) 您可以在"控制面板"中配置IIS,以便您的站点(或机器)使用Windows身份验证并拒绝匿名访问

我遇到了一个相关的问题,我的本地版本将WindowsIdentity。GetCurrent().Name。ToString()值识别为我的Windows帐户名,但当我通过服务器访问网站时,它总是"DefaultAppPool"。

我能够通过以下操作来实现这一点:

  1. 打开IIS并导航到我的网站
  2. 在IIS部分下,双击"身份验证"
  3. 从那里,禁用"匿名身份验证"answers"表单身份验证"
  4. 启用"Windows身份验证"

从那里我能够识别用户id/名称并继续进行编码。我不得不返工一点,但这很值得。谢谢你的建议!

在ASP.NET Core.NET 6中,我使用

Environment.UserName;

//或//以下仅适用于Windows平台

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