【问题标题】:Get Domain User ID in ASP.NET在 ASP.NET 中获取域用户 ID
【发布时间】:2013-08-26 20:56:40
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你是什么意思“Windows用户ID”? Microsoft 帐户(类似于“user@live.com”)、域用户(“mycompany\user”)、本地计算机帐户(“mycomputer\mylocaluser”)还是其他? (如果要求域用户 - Rahul 的答案有必要的位,主要在 cmets 中)
  • @AlexeiLevenkov 我需要域用户
  • 可能离题了,但是为什么用户需要从列表中选择呢?使用集成 Windows 身份验证,您的 asp.net 应用程序已经可以识别用户。如果用户选择其他人的名字登录怎么办?
  • @RayCheng 现在他们选择他们的名字并输入他们的密码。我希望他们跳过该登录过程并由域用户登录。

标签: c# asp.net


【解决方案1】:

试试这个:-

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

也可以查看forum

更新:-

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

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

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

或者像这样:-

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

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

【讨论】:

  • @Apollo,当您说“不起作用”时,您能更具体一点吗?碰撞?空字符串?名字不对?
  • @Apollo:- 请检查您是否在 IIS 中禁用了匿名模式
  • @Apollo:- 还要检查您是否已将应用程序设置为对用户详细信息进行身份验证,如下所示:- 授权>
  • @McKay 我得到一个空字符串。
  • Rahul 你试过那行代码并确认它在你的最终工作。
【解决方案2】:

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

我能够通过执行以下操作来使其工作:

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

从那里我能够识别用户 ID/名称并继续我的编码。我不得不重新工作一点,但这是非常值得的。感谢您的建议!

【讨论】:

    【解决方案3】:

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

    环境.用户名;

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

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

    【讨论】:

    • 这会让你获得当前运行机器的用户,在网络应用中没有用
    • @gilliduck 你用了什么解决方案?你会推荐什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    • 1970-01-01
    • 1970-01-01
    • 2017-08-16
    • 2014-05-02
    • 2017-05-12
    • 2014-12-31
    相关资源
    最近更新 更多