我正在尝试让 ActiveDirectory 和标准表单登录工作,但有一件事阻止了我。我无法获取当前 Windows 用户的名称。我得到的最接近的是var i = WindowsIdentity.GetCurrent();
,但这给了我 IIS 应用程序池用户的名称。我在 IIS 中启用了匿名身份验证、表单身份验证和 Windows 身份验证。我可以从 AD 加载用户,所以我假设我的 web.config 设置正确。
编辑:这是我的 web.config(使用 Facade 提供程序):
<membership defaultProvider="HybridMembershipProvider">
<providers>
<clear />
<add name="HybridMembershipProvider" type="MyApp.Data.HybridMembershipProvider" AspNetProviderName="AspNetSqlMembershipProvider" ActiveDirectoryProviderName="ADMembershipProvider" />
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="MyAppConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="4" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
<add name="ADMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ADConnectionString"
attributeMapUsername="sAMAccountName" enableSearchMethods="true" attributeMapEmail="mail"/>
</providers>
</membership>
编辑 2:这是我的 IIS 安全设置。