asp.net中的用户名

时间:2011-05-27 08:12:56

标签: asp.net iis windows-authentication

我试过这种方式:

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中尝试过它。

我之前发过这个问题,但是有一些误导性信息,所以我再次发布。

2 个答案:

答案 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(您可能没有)。