我試圖讓ActiveDirectory和標準表單登錄工作,但有一件事是阻止我。我無法獲取當前Windows用戶的名稱。我得到的最接近var i = WindowsIdentity.GetCurrent();
,但是這給了我IIS應用程序池用戶的名字。我在IIS中啓用了匿名身份驗證,表單身份驗證和Windows身份驗證。我可以從AD加載用戶,所以我認爲我的web.config安裝正確。ActiveDirectory在ASP.NET中的當前用戶名
編輯:這是我的web.config(使用門面提供商):
<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安全設置。
你能解釋一下你的前兩點嗎?你的意思是「如果這些數據在表格會員提供者/ AD中」。他們是一個用戶,我可以通過用戶名查詢AD。 「 」否則,你將不得不查詢AD來獲取他們的名字。「 - 我可以做到這一點,如果我有他們的名字,但我該怎麼做才能得到他們的名字? – Echilon
爲您編輯的答案,請再閱讀 –
我遇到的問題是'Thread.CurrentPrincipal.Identity.Name '爲空,我無法獲取用戶名。 – Echilon