2012-03-29 80 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

相关问题