ASP.Net MVC4 User.Identity.Name即使将身份验证模式设置为' Windows'

时间:2014-07-26 13:04:55

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

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

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

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

    string userName = User.Identity.Name;

但每次我都得到空值。 如有任何建议,请告诉我。 提前谢谢。

2 个答案:

答案 0 :(得分:8)

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

enter image description here

答案 1 :(得分:0)

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

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

  

默认情况下,ASP.NET Development Web Server在当前Windows帐户的上下文中执行所有页面(无论您用于登录Windows的帐户)。

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

为了验证是否是这种情况,您应该在ASP.NET MVC项目中调用的第一个控制器(或Action)上添加[Authorize]属性。很可能你会遇到一个&#34; HTTP错误401.0 - 未经授权&#34;例外。在这种情况下,您应首先启用您的网络服务器进行身份验证。上面提到的教程将为您提供帮助。