我正在研究ASP.Net MVC-4应用程序。我必须实现Windows身份验证。 我在web.config文件中将身份验证模式设置为“Windows”,如下所示。
<system.web>
<authentication mode="Windows" />
</system.web>
在控制器中我尝试获取如下的用户名。
string userName = User.Identity.Name;
但每次我都得到空值。 如有任何建议,请告诉我。 提前谢谢。
答案 0 :(得分:8)
IIS执行Windows身份验证以建立托管代码User.Identity
。因此,您需要在IIS中启用Windows身份验证,并且为了强制用户在能够访问我们的应用程序之前进行身份验证,您需要禁用匿名身份验证 < / p>
答案 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;例外。在这种情况下,您应首先启用您的网络服务器进行身份验证。上面提到的教程将为您提供帮助。