2012-07-12 1 views
0

사용자가 로그인 페이지에서 로그인하는 asp.net 응용 프로그램이 있습니다. Employee 객체를 만들고 해당 페이지의 button_click 이벤트에 loginID를 저장합니다.asp.net 응용 프로그램 전체에 직원 개체 유지

Employee 개체를 매개 변수로 매번 전달하지 않고도 응용 프로그램 전체에서 Employee 개체를 유지하려면 어떻게해야합니까?

+0

look global.asax –

답변

4

이는 세션 범위 항목을 저장하는 Session State 인 경향이 있습니다.

세션을 넘어서 직원 개체를 저장하면 실제로 개체가 관련된 사용자가 더 이상 사이트를 사용하지 않으므로 개체를 메모리에 유지하는 데 잠재적으로 무의미 해집니다.

전체 응용 프로그램에 실제로 적용하려는 경우 Application State을 살펴볼 가치가 있습니다.

2

아마도 Session data을 사용하고 싶을 것입니다.

주어진 세션과 연결된 객체를 얻는 쉬운 방법이지만주의 사항이 있습니다 (데이터 저장소에 따라 성능에 영향을 줄 수 있습니다. 지속성있는 객체의 크기/복잡성은 얼마나 많은 동시 사용자를 다루고 있는지). 클래스 감안할 때

1

은 다음과 같습니다 세션이 저장

[Serializable] 
public class Employee 
{ 
    public int Id { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

:

protected void DoLogin() 
    { 

     Employee employee = new Employee() 
     { 
      Id = 1, 
      FirstName = "John", 
      LastName = "Smith" 
     }; 

     // save it to session 
     Session.Add("Employee", employee); 
    } 

세션에서 그것을 얻을. "직원"에게 캐스팅해야 함을 알립니다.

protected Employee GetEmployee() 
    { 
     if (Session["Employee"] != null) 
     { 
      // needs to be cast 
      return (Employee)Session["Employee"]; 
     } 
     else 
     { 
      return null; 
     } 
    } 

일반적으로 사용하기 쉽도록이 항목을 속성에 포함합니다. 당신은 보통 세션에서 이와 같은 객체를 필요로하지 않을 것입니다 ... 아마도 당신이 찾고있는 것은 : ASP.NET MVC - Set custom IIdentity or IPrincipal

관련 문제