我正在使用string appNetworkUserId = WindowsIdentity.GetCurrent().Name;
來獲取我的web應用程序的當前用戶。當我在本地運行機器時它工作。我得到domain\my name
,但是當我在我的開發服務器上運行應用程序時,我得到NT AUTHORITY\NETWORK SERVICE
而不是正在訪問該網站的用戶。在web應用程序中獲取當前窗口用戶
如何獲取訪問者的用戶名到我的webapp?
我使用.NET 4.0和C#
我正在使用string appNetworkUserId = WindowsIdentity.GetCurrent().Name;
來獲取我的web應用程序的當前用戶。當我在本地運行機器時它工作。我得到domain\my name
,但是當我在我的開發服務器上運行應用程序時,我得到NT AUTHORITY\NETWORK SERVICE
而不是正在訪問該網站的用戶。在web應用程序中獲取當前窗口用戶
如何獲取訪問者的用戶名到我的webapp?
我使用.NET 4.0和C#
這裏是我最終使用。這工作。
System.Security.Principal.WindowsIdentity wi = System.Security.Principal.WindowsIdentity.GetCurrent();
string[] a = Context.User.Identity.Name.Split('\\');
string appNetworkUserId = Context.User.Identity.Name.ToString();
你得到NT AUTHORITY\NETWORK SERVICE
,因爲這是運行IIS的身份。您在開發環境中獲得自己的名稱,因爲那裏的Web服務器以您登錄的用戶而不是系統用戶身份運行。
如果你使用像一個在ASP.Net MVC的認證框架,你可以在一個控制器動作檢查
User.Identity.Name
。
首先,您需要設置您的網站以使用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;
要獲得用戶名,它會是這樣的:winPrincipal.Identity.Name – NebulaSleuth 2014-10-17 17:46:36