문제

사용자가 로그인 할 때 세션 변수를 유지합니다. 따라서 사용자가 btnlogout을 클릭하면 모든 세션을 지우고 사용자를 양호하게 로그 아웃해야합니다 !!!

세션이 지워지지 만 로그 아웃 직후에 IE에서 뒤로 버튼을 클릭하면 여전히 로그인되었습니다! 즉, 사용자가 여전히 로그인 한 화면으로 돌아갑니다.

로그 아웃에 내 코드

protected void btnLogout_Click
{
   Session.Clear();
   Session.Abandon();
   Session.RemoveAll();

   Response.Redirect("Home.aspx");
}

왜 이걸 예방할 수 있습니까?

편집하다:코드에 옵션이있을 수 있습니다.

도움이 되었습니까?

해결책

이것을 주인의 page_init에 넣을 수 있습니다.

Response.Cache.SetNoServerCaching();
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
Response.Cache.SetExpires(new DateTime(1900, 01, 01, 00, 00, 00, 00));

예를 들어 대부분의 은행 웹 사이트가하는 일이므로 뒤로 버튼을 효과적으로 사용할 수 없습니다.

다른 팁

그래도 이것이 실제로 문제입니까? 그렇습니다. 그들은 이전 페이지가 캐시 된 것처럼 볼 수 있었지만,이 맥락에서 다른 합법적 인 요청을 시도하자마자 세션 변수가 사라짐에 따라 실패합니다.

이 주위에 코딩해야 할 매우 구체적인 이유가 없다면 실제로 존재하지 않는 문제를 해결할 수 있습니다.

페이지에서 다음을 사용하여 Code-Behind, JavaScript에서 또는 HTML을 통해 페이지를 캐시하지 말라고 브라우저에 알릴 수있는 몇 가지 방법이 있습니다.

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">

또한 세션 변수가 실제로 존재하는지 확인하기 위해 일부 코드에 Page_load 이벤트를 추가하는 것이 좋습니다.

브라우저는 페이지의 캐시를 유지하므로 단순히 뒤로 칠하면 서버에 여전히 로그인한지 확인하지 않아도됩니다. 캐시도 보호되도록 HTTPS를 사용해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top