当应用程序在IIS中运行时,如何从Request.ServerVariables(“LOGON_USER”)获取值?

时间:2011-02-13 20:12:43

标签: asp.net

我没有使用任何内置的身份验证机制,只是构建一个需要登录的简单Intranet站点。

但我被要求检索用户的当前Windows登录名,并使用此信息对他进行身份验证。

从我的框中读取Request.ServerVariables(“LOGON_USER”)信息时,一切运行正常。但是当应用程序在我的服务器上运行IIS时,此值始终为空。

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

为了找出用户是谁,您需要对其进行身份验证。这是身份验证的定义。

更改您的web.config以包含:

<authentication mode="Windows"/>

在system.web元素中。这将使用Windows身份验证即。用户通过内部Windows域控制器进行身份验证,而无需使用基于Windows的安全性键入用户名+密码。这非常适合基于Intranet的Web应用程序。因此,您可以取消基于用户名+密码的登录,如果这就是您当前正在做的事情。

参考:How to Use Windows Authentication in ASP.NET 和:Explained: Windows Authentication in ASP.NET更深入

如果您打算根据用户的Windows帐户自动限制对网络资源的访问,您可能需要查看使用模拟,这意味着ASP.NET就像在用户的Windows帐户的上下文中运行一样,并且与该帐户关联的所有用户权限都会有效地传递给您的ASP.NET应用程序。

BTW,我认为Request.ServerVariables(“LOGON_USER”)是旧的ASP Classic方式。改为使用HttpContext.Current.User.Identity.UserName。