ASP.NET 2.0의 세션 변수 문제
-
08-07-2019 - |
문제
사용자가 로그인 할 때 세션 변수를 유지합니다. 따라서 사용자가 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를 사용해야합니다.
제휴하지 않습니다 StackOverflow