0

我正在尝试从我的 asp.net 应用程序中获取 windows 登录用户名。这是我的代码

string user_name = Request.ServerVariables.Get("LOGON_USER");

这在我的本地环境中运行良好,但是当我在 IIS 上上传相同的代码时,它给了我空白,即使我试图通过

HttpContext.Current.User.Identity.Name

但它让我空白。一旦我启用 IIS 身份验证到 Windows 身份验证并禁用反义词身份验证,它就可以正常工作。谁能指导我如何得到这个。如果我使用了任何错误的方法,请纠正我。

提前致谢。

编辑:我不想设置 Windows 身份验证,所以,是否可以通过在 Web.Config 中设置来进行 ASP.NET 页面级身份验证

<allow user="*"/> or <deny user="?"/>

如果我错了,请纠正。

4

1 回答 1

3

为了获得用户名,您需要使用除匿名身份验证之外的其他东西。

使用匿名身份验证,您无法获取本地用户的用户名。即使这是可能的,但对于面向公众的站点 b/c 来说,您可以拥有多台具有相同本地用户名的计算机是不切实际的。

此外,由于您提到这是企业域之外的面向外部的站点,因此 Windows 身份验证不是一个选项。Windows 身份验证主要用于内部 Intranet 应用程序。

如果您想对每个用户进行唯一标识,您可能正在寻找的是表单身份验证,ASP.NET 支持并提供开箱即用的控件,允许用户为您的网站注册和创建帐户。查看此链接 http://msdn.microsoft.com/en-us/library/7t6b43z4.aspx

回答:“通过在 Web.Config 中设置是否可以在 ASP.NET 页面级身份验证中进行?” <allow user="*"/> or <deny user="?"/>在 web.config 中设置授权规则控制authorization给定用户(在这种情况下给定用户是否可以访问页面)之后用户已经访问authenticated,但不会影响authentication方法或成员资格提供程序用过的。因此,此 web.config 设置将不允许您使用匿名身份验证获取用户名。

于 2014-04-11T10:00:47.307 回答