2013-04-26 45 views
3

我正在研究運行在Intranet上的ASP.NET MVC應用程序。我們使用表單身份驗證,但設置的用戶名將與Active Directory用戶名相同。我試圖找到一種方法來預先填寫Windows用戶名的登錄用戶名字段,但無法找到訪問當前Windows用戶身份的方法。使用表單身份驗證時獲取Windows用戶標識

System.Environment.UserDomainName返回 「IIS APPPOOL」

System.Security.Principal.WindowsPrincipal.Current.Identity返回GenericIdentity

HttpContext.Request.LogonUserIdentity.Name返回 「NT AUTHORITY \ IUSR」

我不想進行身份驗證的Windows用戶或登錄到網站的Windows用戶,我只想讀取用戶名。在使用表單身份驗證而不是Windows身份驗證時,有什麼方法可以做到這一點?

+0

我想加入這個'<身份冒充=「真」 />'到webconfig(正下方的'<認證>'位,不裏面!)應該做你需要的。然後,控制器應該有一個'用戶'屬性,你可以查詢,而不是上面的代碼... – Tallmaris 2013-04-26 15:31:49

+0

我只是試了一下,並得到了Principal.GenericIdentity – TabbyCool 2013-04-26 15:47:03

回答

0

試試這個請:

在web.config

<identity impersonate="true" /> 
<authentication mode="Forms"> 
    <forms loginUrl="./WebLogin.aspx" defaultUrl="./default.aspx" timeout="12" path="/" name=".ASPXFORMSAUTH" /> 
</authentication> 

在代碼的C#

string windowsName = WindowsPrincipal.Current.Identity.Name; 
//OR 
string windowsName = Thread.CurrentPrincipal.Identity.Name; 

這項工作對我罰款。

+0

這不就是得到IIS服務器運行的用戶名嗎? – zmurf 2014-01-21 09:51:45

0

關閉Windows身份認證在IIS那麼應該一切工作可能

相關問題