我正在尝试从我的asp.net应用程序获取Windows Logon用户名。这是我的代码
string user_name = Request.ServerVariables.Get("LOGON_USER");
这在我的本地环境中运行正常但是当我在IIS上上传相同的代码时,它给我空白,即使我已尝试通过
获取登录用户名HttpContext.Current.User.Identity.Name
但它让我空白。一旦我启用IIS身份验证到Windows身份验证并禁用反义词身份验证它就可以了。任何人都可以指导我如何得到这个。如果我使用任何错误的approch,请纠正我。
提前致谢。
编辑:我不想设置Windows身份验证,因此,通过在Web.Config中设置,是否可以在ASP.NET页面级别身份验证中使用
<allow user="*"/> or <deny user="?"/>
如果我错了,请纠正。
答案 0 :(得分:2)
为了获取用户名,您需要使用除匿名身份验证之外的其他内容。
使用匿名身份验证,您无法获取本地用户的用户名。即使这是可能的,对于面向公众的站点b / c也不实用,你可以拥有多台具有相同本地用户名的计算机。
此外,由于您提到这是公司域之外的外部网站,因此不能选择Windows身份验证。 Windows身份验证主要用于内部Intranet应用程序。
如果您想要唯一地标识每个用户,您可能正在寻找什么,并且具有ASP.NET身份验证,ASP.NET支持并提供开箱即用的控件,允许用户为您的网站注册和创建帐户。看看这个链接 http://msdn.microsoft.com/en-us/library/7t6b43z4.aspx
要回答:“通过在Web.Config中设置,是否可以在ASP.NET页面级别身份验证中进行验证?”
在web.config中设置<allow user="*"/> or <deny user="?"/>
的授权规则控制给定用户的authorization
(在这种情况下,给定用户是否可以访问页面)在用户{{1}之后},但对authenticated
方法或使用的成员资格提供程序没有影响。因此,此web.config设置将不允许您使用匿名身份验证获取用户名。