【问题标题】:ASP.Net MVC4 User.Identity.Name getting empty even though set authentication mode as 'Windows'即使将身份验证模式设置为“Windows”,ASP.Net MVC4 User.Identity.Name 也会变空
【发布时间】:2014-07-26 13:04:54
【问题描述】:

我正在开发 ASP.Net MVC-4 应用程序。我必须实现 Windows 身份验证。 我已在 web.config 文件中将身份验证模式设置为“Windows”,如下所示。

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

在控制器中,我尝试获取用户名,如下所示。

    string userName = User.Identity.Name;

但每次我得到空值。 请让我知道任何建议。 提前致谢。

【问题讨论】:

  • 你试过HttpContext.Current.User.Identity.Name
  • 是的,我也尝试使用“HttpContext.User.Identity.Name”。但没有价值。
  • 您是否在 IIS 中启用了 Windows 身份验证?
  • 请同时在 IIS 中设置窗口身份验证。 grekai.wordpress.com/2011/03/31/…
  • 您需要在您的 IIS 中启用 windows 身份验证并禁用匿名身份验证

标签: c# asp.net asp.net-mvc-4


【解决方案1】:

Windows 身份验证由 IIS 执行以建立我们的托管代码 User.Identity。因此,您需要在您的 IIS 中启用 Windows 身份验证,并且为了强制用户在能够访问我们的应用程序之前进行身份验证,您需要禁用匿名身份验证

【讨论】:

  • 就是这样。修复了这里的问题。 :)
  • 如果您想知道如何在 IIS 中打开 Windows 身份验证,您可能需要选中 Windows 开始菜单中的复选框 -> “打开或关闭 Windows 功能” -> Internet 信息服务 ->万维网服务 -> 安全 -> Windows 身份验证。
【解决方案2】:

根据给定的信息,您似乎已正确配置项目,但尚未真正验证用户身份。

首先是一些背景。有一个simplified tutorial on asp.net,在两行之间,提到了以下语句:

默认情况下,ASP.NET 开发 Web 服务器在当前 Windows 帐户(您用于登录 Windows 的任何帐户)的上下文中执行所有页面。

这意味着当您使用 F5 运行项目时,它会执行 您的 当前登录的用户帐户下的所有内容。但是,它尚未针对应用程序进行身份验证,因此您的 User.Identity.* 尚未设置。

为了验证是否是这种情况,您应该在 ASP.NET MVC 项目中调用的第一个控制器(或操作)上添加 [Authorize] 属性。您很可能会遇到“HTTP Error 401.0 - Unauthorized”异常。在这种情况下,您应该首先启用您的网络服务器进行身份验证。上面提到的教程将帮助您。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    相关资源
    最近更新 更多