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

答えて

2

を。次のように試してみてください:

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

私が最初に正しいデータを取得すると、残りのコードは正常に動作するはずです。

+0

ローカルで正常に動作しますが、公開するとサーバーのデータが表示されます。 –

+0

@just_nameもっと具体的になりますか?公開時にユーザー名は正しいですか? – jadarnel27

+0

'context.Request.LogonUserIdentity.Name'は、公開されたサーバーのアカウントを取得します –

関連する問題