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

사용자가 컴퓨터에 로그인 한 계정 (예 : domain \ username)을 얻으려고하거나 실제 컴퓨터가 도메인에 가입되어있는 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'은 내가 게시 한 서버의 계정을 가져옵니다. –

관련 문제