为什么HttpContext.Current.User.Identity.Name返回空白

时间:2011-10-20 17:09:14

标签: asp.net authentication authorization

我创建了一个网站。这是一个内部网站。它是一个.NET 4.0站点。我想使用浏览网站的人的HttpContext.Current.User.Identity.Name来获取用户名。没有登录页面,因为它是内部的。我不确定我错过了什么。我的webconfig中是否需要以下内容:

<authentication mode="Windows"></authentication>
<identity impersonate="true"/>
<authorization>
  <allow users="?"/>
</authorization>

和此:

  <system.webServer>
  <validation validateIntegratedModeConfiguration="false" />

5 个答案:

答案 0 :(得分:15)

未经身份验证时出现空白。您也可以通过以下方式验证这一点:

HttpContext.Current.User.Identity.IsAuthenticated

检查IIS中的身份验证级别,是否设置为启用Windows身份验证?

答案 1 :(得分:9)

在iis中禁用匿名访问并为您的Web应用程序启用集成的Windows安全性。

答案 2 :(得分:4)

是的,你确实需要,至少

<authentication mode="Windows"></authentication>
如果您使用集成Windows身份验证,则需要

部分。

之后,您应该能够获取登录用户的用户名。

不,你不需要:

<validation validateIntegratedModeConfiguration="false" />

答案 3 :(得分:2)

在IIS中,转到Sites \ Default Website \ [Your Website]。

选择身份验证选项并禁用匿名身份验证。

答案 4 :(得分:1)

在我的案例中,从<remove name="FormsAuthentication" />帮助移除web.config行。

我在<authentication mode="Forms" />部分也有<system.web>