具有Windows身份验证的User.Identity.Name

时间:2013-08-16 14:47:24

标签: asp.net

我的标题中有一个非常简单的局部视图叫做AccountInfoPanel。 它只有一行:

Welcome: @HttpContext.Current.User.Identity.Name

在我的Web.Config中我有

<authentication mode="Windows" />

但身份名称始终为空。 如果我通过VS 2012调试,并打破索引操作,我发现它是空的。

如果我通过启用Windows身份验证和匿名身份验证的IIS运行它,我会遇到挑战。 所以我尝试插入我的帐户或test1和test2帐户。 它回来说:

HTTP错误401.1 - 未经授权 您无权使用您提供的凭据查看此目录或页面。

我还尝试将Impersonation设置为true并从挑战中获得相同的响应。 有谁知道如何设置它?

如果所有设置都必须在IIS中完成,那么如何在Visual Studio中调试代码?

另一个问题。我的老板似乎认为你甚至不需要登录框。 IE会知道你是谁。并且您可以使用其他帐户在IE中“运行”。

4 个答案:

答案 0 :(得分:8)

检查我的核对清单上的一个可能的问题

http://netpl.blogspot.com/2012/06/iis-75-integrated-security-with-no.html

简而言之:

首先,确保为站点关闭匿名身份验证:

其次,在Interner Explorer中启用集成安全性(选项/高级并选中“启用集成Windows身份验证”选项)。

第三步,将您的网站添加到本地Intranet区域,并至少选择“选项/安全设置/本地Intranet /自定义级别”下的“仅在Intranet区域中自动登录”选项。

第四,确保用户和应用服务器位于同一个域中。

答案 1 :(得分:5)

要解决此问题,您必须启用Windows身份验证功能。请按照以下步骤操作:

单击“开始”,然后单击“控制面板”。打开“程序”组。 - 在“程序和 - 功能”下,单击“打开或关闭Windows功能”。 - 展开标记为Internet Information Services的项目。 - 展开标记为万维网服务的项目。 - 扩展项目安全 - &gt; 确保选择Windows身份验证

此外,您需要从IIS中禁用匿名身份验证,如下所示: - 在IIS中单击您的应用程序 - 双击IIS组下的身份验证 - 单击“匿名身​​份验证” - 单击“操作”下右侧的“禁用”。希望这有帮助

答案 2 :(得分:1)

Visual Studio安装IIS Express以提供Web应用程序,因此您必须将其配置为使用Windows身份验证。

IIS Express的配置文件通常在这里(更多信息:Where is the IIS Express configuration / metabase file found?):

%userprofile%\documents\iisexpress\config\applicationhost.config

禁用匿名身份验证(默认情况下启用):

<anonymousAuthentication enabled="false" userName="" />

启用Windows身份验证(默认情况下禁用):

<windowsAuthentication enabled="true">
   <providers>
     <add value="Negotiate" />
     <add value="NTLM" />
   </providers>
</windowsAuthentication>

答案 3 :(得分:0)

我知道这是一个老问题,但由于未得到回答,也许有人可以使用我的小费。一段时间以来,我一直在努力解决这一问题,最后,我发现需要安装URL授权才能使其正常工作。

导航至Windows功能并安装以下功能:

Web服务器(IIS)-> Web服务器->安全-> URL授权

为了以防万一,我还重新启动了IIS,但是我不确定是否需要它。