2009-05-13 2 views
0

ASP.NET의 인트라넷 컴퓨터에 로그온 한 사람의 사용자 이름과 클라이언트 컴퓨터 이름을 검색하려고합니다. 이것은 단지 로깅 목적을위한 것입니다. 사용자 이름 "System.Security.Principal.WindowsIdentity.GetCurrent(). Name"을 검색 할 때 문제는이 사용자가 동일한 사용자 이름 (즉, 내 응용 프로그램을 배포 한 서버 이름)을 모두 표시하는이 사이트에 액세스하는 것입니다. 도와주세요. web.config에서 Windows 인증 모드를 사용하고 있습니다.Windows 인증을 사용하여 클라이언트 사용자 이름 다시 가져 오기

답변

2

는 사용자의 이름은 @Mehrdad 설명했다 할 수있다. 사용자의 컴퓨터의 이름은 당신이 사용할 수있는 HttpRequest에이 같은 객체 :

<system.web> 
    <authentication mode="Windows"/> 
</system.web> 
:이 라인을 사용하고 web.config 파일에서

if(Request.IsAuthenticated) 
    string userName = Request.LogonUserIdentity.Name; 
string machineAddress = Request.UserHostAddress; 
string machineName = Request.UserHostName; 

(편집)

하여 default.aspx.cs에서

나는이 사용하고 있습니다

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     StringBuilder sb = new StringBuilder(); 

     if (Request.IsAuthenticated) 
     { 
      sb.AppendFormat("User Name: {0}<br/>", Request.LogonUserIdentity.Name); 
     } 
     else 
     { 
      sb.Append("Request not authenticated"); 
     } 

     sb.AppendFormat("Machine Address: {0}<br/>", Request.UserHostAddress); 
     sb.AppendFormat("Machine Name: {0}<br/>", Request.UserHostName); 

     lblTest.Text = sb.ToString(); 
    } 
} 

목 proucing입니다 다음과 같은 출력 :

사용자 이름 : HPA들 \ 기계 주소

amantur : 127.0.0.1

컴퓨터 이름 : 127.0.0.1 I TREID가 있지만 아무튼

+0

IIS 설정에 누락 된 것이 있으면 동일한 결과를 얻지 못합니다. 도움을 청합니다. – Xyz

+0

도움을 주셔서 감사합니다. 나는이 코드를 시도했지만 "요청을 인증하지 못했습니다"라는 메시지가 누락되었습니다.이 message.please 도움을 얻고 있습니다. – Xyz

+0

알았어요 !! IIS 관리자에서 웹 응용 프로그램에 대한 익명 액세스를 비활성화해야합니다. 익명 액세스가 활성화되어 있고 사용자 ID/비밀번호를 입력 할 필요가 없으며 Request.IsAuthenticated가 익명 프로필을 사용 중이므로 false입니다. – TheVillageIdiot

1

사용중인 코드는 WindowsIdentity (ASP.NET이 실행되고있는 ID) 인 현재 스레드와 연결됩니다. 작동하지 않을 클라이언트 사용자 ID를 기반으로 가장하지 않는 한. 당신은이를 사용할 필요가 :

HttpContext.Current.User.Identity.Name 
관련 문제