2012-03-29 117 views
3

如何在Form authentication的情況下獲取他訪問應用程序的用戶計算機帳戶。如何獲取用戶登錄到我的應用程序的機器帳戶?

我用下面的方法,但它沒有得到所需的數據:

protected string[] TrackUser() 
{ 
    System.Web.HttpContext context = System.Web.HttpContext.Current; 
    string IP = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; 
    string compName = (Dns.GetHostEntry(Request.ServerVariables["remote_addr"]).HostName); 
    string account = Request.ServerVariables["AUTH_USER"]; 
    string[] user_network_data = new string[3]; 
    if (!string.IsNullOrEmpty(IP)) 
    { 
     string[] addresses = IP.Split(','); 
     if (addresses.Length != 0) 
     { 
      IP = addresses[0]; 
     } 
    } 
    else 
    { 
     IP = context.Request.ServerVariables["REMOTE_ADDR"]; 
    } 
    user_network_data[0] = IP; 
    user_network_data[1] = compName; 
    user_network_data[2] = account; 
    return user_network_data; 
} 
+0

您是否試圖獲取用戶登錄到本機的帳戶(例如域\用戶名),或者您是否試圖獲取物理機器加入域的AD帳戶(目前不管用戶登錄到它)? – Mike 2012-03-29 12:10:58

回答

2

我想我們就可以抓取從請求錯誤的初始信息。試試這些:

string IP = context.Request.UserHostAddress; 
string compName = context.Request.UserHostName; 
string account = context.Request.LogonUserIdentity.Name; 

我覺得你的代碼的其餘部分應正常工作,一旦你有正確的數據,開始了。

+0

它在本地工作正常,但它會在我發佈時帶來服務器數據! – 2012-04-01 07:43:04

+0

@just_name嗯,你能更具體嗎?發佈時用戶名是否仍然正確? – jadarnel27 2012-04-01 23:43:12

+0

'context.Request.LogonUserIdentity.Name'帶來我發佈的服務器的帳戶 – 2012-04-02 07:06:32

相關問題