2012-03-02 1 views
4

사용자가 먼저 무엇인가를 클릭하기를 기다리지 않고 시간 초과가 발생하면 로그인 페이지로 리디렉션 할 수 있습니까? 지금은 시간 초과가 발생하면 페이지 사용자가 계속 표시되지만 사용자가 아무 것도 클릭하지 않으면 로그인 페이지로 이동합니다. 감사합니다. .ASP.Net 폼 인증 - 제한 시간에 로그인 페이지로 이동

답변

5

세션이 만료 된 경우 클라이언트 측에서 확인해야합니다. 가장 쉬운 방법은 페이지가로드되었을 때 자바 스크립트를 사용하여 카운트 다운을 시작하는 것입니다. 만료되면 사용자를 로그인 페이지로 보냅니다. 또는 아마도 더 좋을 것입니다. 사용자에게 세션이 만료되었음을 알리십시오. 어쩌면 그 사람을 어딘가에 보내면 너무 행복하지 않을 수도 있기 때문입니다. 내 온라인 뱅킹 소프트웨어가 보안상의 이유로 그런 역할을하지만 물론 그렇습니다. http://jsfiddle.net/39Sj6/1/

function sessionHasExpired(){ 
    if(confirm("Your session has expired. Do you want to go to the login page")){ 
     window.location = "http://google.com/?q=login"; 
    } 
} 

var sessionTimeInMilliseconds = 1000*60*5; // here: 5 minutes 
setTimeout(sessionHasExpired, sessionTimeInMilliseconds); 

(이것은 jsfiddle에 의해 금지로 jsfiddle에서 Google에 리디렉션되지 않지만 원칙적으로 작동 것)

:

여기 아주 간단한 예제

+0

감사합니다. Andre. 이것은 일부 페이지에 표시되는 일부 사소한 데이터가 포함 된 인트라넷 응용 프로그램이므로 시간 초과가되면 자동으로 로그 아웃됩니다. 이것을 달성하는 방법에 대한 몇 가지 샘플 코드를 제공 할 수 있습니까? 마스터 페이지를 사용하는 경우 카운트 다운 스크립트가 마스터 페이지에 있어야합니까? – NoBullMan

+0

나는 실수로 Mark 대신에 예제를 추가했습니다. 이 답변에 예제를 추가했습니다. 사용자가 페이지를 떠날 지 말지를 묻지 않으려면 confirm() 구문을 사용하지 말고 단순히 window.location을 설정하십시오. 모든 페이지에 포함되는 경우 마스터 페이지에 스크립트를 추가 할 수 있습니다 (예). 아약스 호출을하는 경우 각 아약스 호출 후 시간 초과를 재설정해야합니다. –

+0

다시 한번 감사드립니다. Andre. 몇 가지 : 확인을 클릭하고 로그인 페이지로 이동하면 브라우저의 뒤로 버튼을 클릭하고 내가 있던 곳으로 이동하여 내가하고있는 일을 계속할 수 있습니다. 시간 초과가 발생했지만 세션이 아직 살아 있습니다. 또한 마스터 페이지에 스크립트를 추가하면 페이지에서 페이지로 이동할 때 타이머가 0에서 시작합니까? 아니면 중단 된 부분에서 계속 타이머가 시작합니까? – NoBullMan

0

예, Javascript 타이머 및 ajax 호출을 통해 세션 상태를 폴링하여 서버 세션 상태를 확인한 다음 로그인 페이지로 리디렉션하거나 타이머를 지정된 제한 시간 (20 분 또는 20 분)으로 설정할 수 있습니다. 세션 시간 초과) 그러면 로그인 페이지로 리디렉션됩니다.

+1

서버를 폴링하면 세션이 새로 고쳐집니다. 그것은 빛이 실제로 나가는 지보기 위해 냉장고 문을 여는 것과 같습니다. –

+0

GET이 세션을 새로 고침한다는 사실을 깨닫지 못했습니다. 그러면 작동하지 않습니다. 세션 제세 동기와 같은 일종의 타임 아웃 대신 좋은 대안이 될 수 있습니다. :) –

+2

절대적으로 - "제발, 제 연회에서 죽지 마세요!" :-) –

관련 문제