웹 사이트에 로그인/로그 아웃 기능을 구현 중입니다. 사용자가 Sign out
버튼 (어디 있지만, 로그인 페이지, Login.aspx
에) 클릭 할 때마다 다음과 같은 방법을 실행합니다 :Response.Redirect 다음에 세션 시간 초과를 감지합니까?
protected void SignOut(object sender, EventArgs e)
{
Session.Abandon();
Response.Redirect("Login.aspx");
}
을 이제 리디렉션이 발생했을 때, 나는 Login.aspx
에서 다음을 수행 할 :
protected void Page_Init(object sender, EventArgs e)
{
if (Session_has_timed_out ...)
SessionTimeOutDIV.Text = "Session timed out. Please log in again.";
else
{
// normal logic here ...
}
}
Q : 어떻게 세션이 이전에 나는이 (1) Session.Abandon()
의 실제 호출 후 (2)이 Session.Abandon()
에 대한 호출이 있었다 곳에서 리디렉션하고 이후에 확인해야 주어진, 종료 된 것을 확인 할 일어난?
'Session.Abandon()'은'session_end' 이벤트를 발생시킵니다. 거기에 뭔가를 설정할 수 있습니다. 또한 포기한 이벤트 후에는 모든 세션 변수가 null이되어 확인할 수 있습니다. 그것은 당신이 찾고있는 것입니까? –
@Ravi A. 올바르게 이해하면,'Session.Abandon()'은 모든 세션 변수를 파괴 할 것입니다. 따라서 기술적으로 전화 통화와 '세션 [ '이름']'** 이전 ** 세션이도 만들어지고 ** 후 ** 포기되어있다 - 두 경우 모두에서 우리는'null'를 얻을. 이것이 문제입니다. 왜냐하면'Page_Init'에서'Session [ 'username']'을 체크하면 페이지가 시작될 때마다 조건이 'true'로 해석 될 것이기 때문입니다. 세션이 ** 종료 ** 될 때마다 (즉, 사용자가 로그 아웃했을 때) 사실 만 필요합니다. – Alex