我正在尝试从服务器登录用户的Windows,我尝试的所有方法都会返回网络的详细信息。
我确实在我的web.config中放了<identity impersonate="true">
但没有帮助。
这是我的webconfig:
<?xml version="1.0"?>
<configuration>
<appSettings>
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None"/>
</appSettings>
<system.web>
<authentication mode="Windows"/>
<identity impersonate="true"/>
<compilation targetFramework="4.5" debug="true"/>
<httpRuntime targetFramework="4.5"/>
<sessionState timeout="20"/>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
</system.webServer>
</configuration>
这是我的C#电话:
string id1 = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
string id2 = Page.User.Identity.Name;
string id3 = Request.LogonUserIdentity.Name;
所有3退回空白或网络详细信息。任何解决方案??
答案 0 :(得分:2)
如果整个网站需要Windows身份验证,则应确保禁用匿名身份验证。为此:
禁用匿名身份验证后,id2
或id3
的代码将拥有Windows登录信息。您的id1
代码将报告应用程序池的标识。
如果只有部分网站需要身份验证而其他部分不需要身份验证,那么您的web.config应该定义授权规则(并且应该保持启用匿名身份验证)。例如,您可以默认拒绝匿名用户访问所有页面,但特别允许匿名访问Default.aspx。
<configuration>
<system.web>
...
<authorization>
<deny users="?"/>
</authorization>
...
</system.web>
<location path="Default.aspx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
</configuration>
Windows身份验证不要求您的应用程序实施登录过程。它将向浏览器发出身份验证质询。某些浏览器(如IE)会自动提供Windows凭据,而其他浏览器会显示登录提示。