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

oba*_*sta 10 asp.net authentication authorization

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

<authentication mode="Windows"></authentication>
<identity impersonate="true"/>
<authorization>
  <allow users="?"/>
</authorization>
Run Code Online (Sandbox Code Playgroud)

还有这个:

  <system.webServer>
  <validation validateIntegratedModeConfiguration="false" />
Run Code Online (Sandbox Code Playgroud)

Bri*_*ins 15

未经身份验证时,它会显示为空白.你可以通过以下方式验证这一点:

HttpContext.Current.User.Identity.IsAuthenticated
Run Code Online (Sandbox Code Playgroud)

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


Dav*_*ras 9

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


Ica*_*rus 5

是的,你确实需要,至少

<authentication mode="Windows"></authentication>
Run Code Online (Sandbox Code Playgroud)

如果您使用集成 Windows 身份验证,则需要该部分。

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

不,你不需要:

<validation validateIntegratedModeConfiguration="false" />
Run Code Online (Sandbox Code Playgroud)

  • 您是否在 IIS 中的应用程序级别配置了集成 Windows 身份验证? (2认同)