해결 방법이 있습니다.
저는 ASP.NET
C#
으로 일하고 있습니다. Login
페이지를 제외한 사이트의 모든 페이지에 대해 Master Page
이 있습니다. Master Page
Sever Page Load event
에서 참조 페이지의 Url
이 나오고 사이트의 루트가 포함되어 있는지 확인하십시오. 그렇지 않은 경우 Login
페이지로 리디렉션되고 그 이후에는 Master Page
이 표시됩니다.
다른 사이트의 페이지로 이동하려고하거나 브라우저의 주소 상자에 Url
을 입력하면 작동합니다. 따라서 탭을 닫고 다른 탭에서 다시 들어가거나 탭을 다시 열려고해도 쿠키가 삭제되지 않은 경우에도 Login
을 통과하지 않고 사이트에 다시 입장 할 수 없습니다. 탭을 닫지 않고 같은 탭에서 다른 사이트를 탐색하는 경우에도이 기능이 작동합니다.
이
은 당신이 열립니다 다른 탭의 사이트의 다른 페이지로 연결되는 링크를 열 경우에도 문제가 없습니다 코드
if (Request.UrlReferrer == null || !Request.UrlReferrer.AbsoluteUri.ToString().Contains("root"))
{
Response.Redirect("~/Account/Login.aspx");
}
사이트 내에서 탐색합니다.
Login
페이지로 redircting하기 전에 해당 if
절에있는 세션 및 인증 쿠키를 삭제할 수 있는지 확인하려면 다음을 수행하십시오.
사용자가 동일한 탭에서 다른 사이트로 이동하여 브라우저에서 back to
버튼을 누르면 캐시에서 작동하고 자동으로 서버에 요청을 보내지 않기 때문에이 기능은 작동하지 않습니다.
이렇게하면 탭을 닫을 때 세션 또는 인증 쿠키가 죽지 않지만 탭을 닫은 후에 로그인하지 않고도 사이트 재 입력을 막을 수 있습니다.
Paul, 아래 Sander에게 "내 문제는 ..."이라고하는 제 의견을 참조하십시오. –
그런 상황에서는 탭 닫기가 주요 문제가 아닙니다. 세션의 만료를보다 적극적으로 제어합니다. 사용자 활동이 없으면 자동으로 로그 아웃하는 JS의 클라이언트에서 일종의 활동 제한 시간을 구현하려고합니다. 이러한 유형의 행위는 대부분의 은행 사이트에서 찾을 수 있습니다. –
Paul, 당신 말이 맞아요. 나는이 문제에 대해 잠을 자고 그 행동이 내가 취할 계획이다. 이제 구현하는 가장 좋은 방법에 대한 또 다른 stackoverflow 질문을 넣어. –