是否可以从发送请求的客户端获取Windows用户名,而无需用户将其输入登录字段?
我正在建立一个面向公众的网站,我的经理希望我们网络上托管网站的任何人都不必在访问网站时登录。他们希望站点在访问站点时自动获取Windows用户名并对Active Directory进行身份验证。
我一直在使用Request.LogonUserIdentity.Name和WindowsPrincipal(WindowsIdentity.Name)之类的东西,但它们总是返回IIS应用程序池名称。我在IIS中尝试过每种身份验证组合。
当我启动站点并在家庭控制器中检查它时,HttpContext.User.Identity.Name始终为空,但在我尝试访问站点区域并使用启动登录的身份验证后填充它用户必须输入其Windows凭据的框。
是否无法自动获取Windows用户名而无需提示用户使用它?
*************** * 解决了 ************************************************ ****
我正确设置了所有设置。我唯一错误的就是使用Firefox。 Internet Explorer是唯一可以自动检索用户的Windows帐户并填充User.Identity对象的浏览器。任何其他浏览器都可以填充此内容,但仅在提示用户输入其Windows帐户凭据后才会填充。
答案 0 :(得分:1)
转到IIS中的身份验证设置,并使用Windows身份验证设置您的站点(如果尚未安装)。使用以下元素确保您的Web配置也正确设置:
<system.web>
<authentication mode="Windows" />
<authorization>
<allow users="*" />
<deny users="?"/>
</authorization>
</system.web>
您不应该使用Windows身份验证获取登录提示,因此,如果您是,请查看this。那么你应该希望能够得到用户:
System.Web.HttpContext.Current.User