2014-10-17 80 views
0

我正在使用string appNetworkUserId = WindowsIdentity.GetCurrent().Name;來獲取我的web應用程序的當前用戶。當我在本地運行機器時它工作。我得到domain\my name,但是當我在我的開發服務器上運行應用程序時,我得到NT AUTHORITY\NETWORK SERVICE而不是正在訪問該網站的用戶。在web應用程序中獲取當前窗口用戶

如何獲取訪問者的用戶名到我的webapp?

我使用.NET 4.0和C#

回答

1

這裏是我最終使用。這工作。

System.Security.Principal.WindowsIdentity wi = System.Security.Principal.WindowsIdentity.GetCurrent(); 
string[] a = Context.User.Identity.Name.Split('\\'); 
string appNetworkUserId = Context.User.Identity.Name.ToString(); 
1

你得到NT AUTHORITY\NETWORK SERVICE,因爲這是運行IIS的身份。您在開發環境中獲得自己的名稱,因爲那裏的Web服務器以您登錄的用戶而不是系統用戶身份運行。

如果你使用像一個在ASP.Net MVC的認證框架,你可以在一個控制器動作檢查

User.Identity.Name 

1

首先,您需要設置您的網站以使用NTLM或集成Windows身份驗證。否則,遠程用戶將不會被認證爲Windows用戶,並且您無法確定其用戶帳戶。

請參閱此處瞭解身份驗證模式的討論。

http://msdn.microsoft.com/en-us/library/ee825205(v=cs.10).aspx

http://technet.microsoft.com/en-us/library/cc733010(v=ws.10).aspx

一旦被配置,你可以獲取當前用戶:

using System.Security.Principal; 

// Obtain the authenticated user's Identity 
WindowsPrincipal winPrincipal = (WindowsPrincipal)HttpContext.Current.User; 
+0

要獲得用戶名,它會是這樣的:winPrincipal.Identity.Name – NebulaSleuth 2014-10-17 17:46:36

相關問題