我试过这种方式:
Request.ServerVariables["LOGON_USER"]
或
HttpContext.Current.User.Identity.Name
或
User.Identity.Name
- 如果我从VS2010通过F5运行它,它运行正常。
- 如果我在IIS上运行它(我在5.1和6.0上试过它,其他IIS我不能使用),那里有空字符串。
在web.config中我有:
<authentication mode="Windows"/>
<authorization>
<allow users="*"/>
</authorization>
所以,所有用户都应该通过autentificated。
也许,web.config中应该有更多内容。
我在IE,Firefox和Chrome中尝试过它。
我之前发过这个问题,但是有一些误导性信息,所以我再次发布。
答案 0 :(得分:0)
所以,所有用户都应该通过autentificated。
完全。 所有用户都包含匿名用户。
答案 1 :(得分:0)
任何网络浏览器都会首先尝试匿名请求,如果成功则不会尝试进行身份验证。所以你想拒绝匿名请求:
<authentication mode="Windows" />
<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
请注意,授权元素中的项目顺序非常重要 - 它们就像任何访问规则一样,它们是从上到下处理的。
在这种情况下?是匿名用户,*是所有用户(包括匿名用户),但由于拒绝匿名用户语句首先出现 - 它们将被拒绝,并且永远不会看到允许其他人的允许语句。
另外,如果这是一个ASP.NET MVC 3 Web应用程序,那么有些怪癖需要注意 - 如果我错了请纠正我,因为我现在不记得所有细节:
<appSettings>
<add key="autoFormsAuthentication" value="false" />
</appSettings>
必须禁用autoFormsAuthentication才能在MVC 3 Web应用程序中启用Windows身份验证 - 或者无论如何,它现在可能已经修复但是由于花了很长时间才弄明白,我在这里包含它。没有禁用它时的症状是每个身份验证请求都被重定向到帐户表单URL(您可能没有)。