【问题标题】:ASP.NET web application -- how to get Windows user?ASP.NET Web 应用程序——如何获取 Windows 用户?
【发布时间】:2022-01-21 03:33:58
【问题描述】:

我在 IIS 中运行的旧版 ASP.NET Framework 4.5 (Windows auth) 网站使用以下代码获取 Windows 用户 ID(以评估权限):

String Name = System.Environment.UserName;

查看此字符串的日志,未正确获取 Windows 用户 ID;而是获取应用程序池凭据对应的名称。

这是因为在web.config 中使用了模拟:

<identity impersonate="true" userName="app_user" password="xxxx" />

或者我可以更改 IIS 中的设置来更正此问题吗?

该网站曾经正常运行。 IIS 中发生了一些变化,但现在没有...

在web.config中,指定了windows认证:

<system.web>
<compilation debug="true" defaultLanguage="c#" targetFramework="4.5" />
<authentication mode="Windows" />. . .

更新:通过在 IIS 中为 Web 应用程序本身启用匿名身份验证(模拟),我能够克服这个问题。

【问题讨论】:

  • 你不应该再在identity标签中设置userNamepassword。要为整个 Web 应用程序配置身份,您应该使用应用程序池身份。要在旧版 ASP.NET Web 应用程序中查询登录用户信息,请使用 Page.UserController.User。不知道您是如何开始使用此网络应用程序的,但互联网上有大量示例告诉您正确的方法。
  • 您可以阅读我的博客文章了解更多详细信息,blog.lextudio.com/…

标签: asp.net iis


【解决方案1】:

使用以下代码获取 Windows 用户 ID(以评估权限):

字符串名称 = System.Environment.UserName;

如果您已经在您的 ASP.NET 应用程序中实现了 Windows 身份验证(实际上,以下代码就足够了):

<configuration>
  <system.web>
    ...
    <authentication mode="Windows"></authentication>
  </system.web>
</configuration>

通过System.Web.HttpContext.Current.User / System.Web.HttpContext.Current.User.Identity.Name 属性值检索必要的信息(无论您在哪里 - ASPX 页面代码隐藏、ASP.NET MVC 控制器、任何 ASP.NET 应用程序模块):

查看一些相关线程以了解差异: System.Web.HttpContext.Current.User.Identity.Name Vs System.Environment.UserName in ASP.NET

ASPX 页面代码隐藏:

protected void Page_Load(object sender, EventArgs e) {
    //Page.User
    ...
}

ASP.NET MVC 控制器:

public class HomeController : Controller {
    public ActionResult SomeActionMethod() {
        //User
    }
}

任何 ASP.NET 应用程序模块:

public class X {
    public void Y() {
        //System.Web.HttpContext.Current.User
    }
}

【讨论】:

  • 对不起:我正在检索用户名的代码在后面的 ASPX 页面代码中。
  • 检查我们的第一个代码 sn-p。
  • 谢谢;该代码已经在 web.config 中。我会更新我的问题。
  • 我的代码对你有用吗?
  • 感谢您的代码。事实证明,该问题与禁用 IIS 匿名身份验证有关。我坚持使用原始代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多