2012-07-27 3 views
0

불명확 한 질문 제목에 대해 정말 유감스럽게 생각하지만 혼란 스럽습니다.사이트를 방문한 마지막 사람의 사용자 이름 얻기

IIS에서 내 웹 사이트를 실행하고 현재 로그인 한 사용자의 사용자 이름을 표시하는 맨 위에 있습니다. 내 웹 사이트는 로컬 서버에서 호스팅되며 여러 사용자가 동시에 액세스합니다.

문제

사용자가 단지 최근에 사이트를 방문한 이전 사용자의 사용자 이름을 표시하는 사이트를 엽니 다마다.

CODE

내가 내 Global.asax 파일에 사용하고있는 코드입니다.

 void Session_Start(object sender, EventArgs e) 
    { 
     // Code that runs when a new session is started   
     // code to get the current user name when running from IIS 
     System.Security.Principal.IPrincipal _User; 
     _User = System.Web.HttpContext.Current.User; 
     System.Security.Principal.IIdentity _Identity; 
     _Identity = _User.Identity; 
     string _Value; 
     _Value = _Identity.Name.Substring(_Identity.Name.IndexOf(@"\") + 1); 

DataTable dtId = CetDatabase.GetEmployeDetails(_Value); 
     if (dtId.Rows.Count > 0) 
     { 
      Session["teamid"] = dtId.Rows[0]["TEAMID"].ToString(); 
      Session["projectid"] = dtId.Rows[0]["PROJECTID"].ToString(); 
      Session["memberid"] = dtId.Rows[0]["MEMBERID"].ToString(); 
      CeteraQMS.Main_Master.projectname = dtId.Rows[0]["PROJECTNAME"].ToString(); 
      CeteraQMS.Main_Master.username = _Value; 
      CeteraQMS.Main_Master.teamname = dtId.Rows[0]["TEAMNAME"].ToString(); 
      Session["role"] = dtId.Rows[0]["MEMBERROLE"].ToString(); 
     } 
     else 
     { 
      Response.Redirect("AccessDenied.aspx"); 
     } 
    } 

어디서 잘못 될지 잘 모르겠습니다. 사전 아킬

이 여기
+0

'Session_Start'에서 초기화 한'_Value' 문자열 변수로 무엇을하고 있습니까? 어딘가에 보관하고 있습니까? –

+0

사용자가 성공적으로 로그인하여 그 이름 만 인쇄하면 세션에 사용자 이름을 저장할 수 없습니까? –

+0

@DarinDimitrov 사용자 이름을 라벨에 표시합니다. – akhil

답변

1

에서

감사합니다 :

CeteraQMS.Main_Master.username = _Value; 

는 정적 객체에 속성을 설정하는 것 같습니다. Main_Master 속성은 CeteraQMS 클래스의 정적 속성처럼 보입니다 (그 값이 무엇이든간에). 그리고 정적 객체는 애플리케이션의 모든 사용자가 공유한다는 것을 알고 있습니다. 따라서 현재 사용자에게만 특정한 상태를 저장하기 위해 정적 객체를 사용하지 마십시오. 사용자 이름 및 기타 사용자 별 속성을 저장하려면 teamid, projectid, memberidrole 값을 사용했을 때와 같은 방식으로 세션에 저장하는 것이 좋습니다.

+0

고마워요. 너의 끝은 일했다. :) – akhil

관련 문제