获取用户';s的windows登录返回NETWORK SERVICES
本文关键字:登录 windows 返回 NETWORK SERVICES 用户 获取 | 更新日期: 2023-09-27 18:01:12
我正在尝试从服务器获取用户的windows登录,我尝试的所有方法都返回网络的详细信息。
我确实在web.config中放入了<identity impersonate="true">
,但没有任何帮助。
这是我的网络配置:
<?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个返回为空或带有网络详细信息。有什么解决方案吗??
如果整个网站都需要Windows身份验证,则应确保禁用匿名身份验证。为此:
- 打开Internet信息服务(IIS(管理器
- 选择您的web应用程序并打开身份验证功能
- 请确保禁用"匿名身份验证"并启用"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凭据,而其他浏览器(如Firefox(则会显示登录提示。