2010-12-07 7 views
0

세션 시간 초과에서 2 분이 남았을 때 사용자에게 묻습니다. 사용자가 을 누를 경우 예을 선택하면 사용자가 No을 선택하면 양식 데이터를 잃지 않고 현재 세션을 새로 고칩니다. 그러면 세션이 로그 아웃됩니다. 2 분이 남았음을 포착하는 방법과 양식 데이터를 잃지 않고 현재 세션을 새로 고치는 방법을 알고 싶습니다. 임 Asp.Net MVC 2와 JQuery를 사용하여, 한 가지 더 폼 인증을 사용하지 않음 ImAsp.Net MVC 2에서 세션 시간 초과 확인.

+0

어떤 세션에서 이야기하고 있습니까? HttpSession입니까? 슬라이딩 만료가 활성화 되었습니까? 또한 세션을 * 로그 아웃하면 무엇을 의미합니까? –

답변

1

글쎄, 각 요청 후에 세션이 새로 고쳐집니다. 세션 시간 초과는 Session.Timeout에서 확인할 수 있습니다. 당신은 당신의 masterpage에 이런 일을 할 수있는 :

<script type="text/javascript"> 
function keepAlive() { 
    window.clearTimeout(window.sessionKeepAlive); 
    window.sessionKeepAlive = window.setTimeout(function() { 

     if(confirm('refresh session?')) { 
      // submit ajax request 
     } else { 
      // logout 
     } 

    }, <%= (Session.Timeout - 2) * 60 * 1000 %>); 
} 

keepAlive(); 
</script> 

그런 다음, 당신은 모든 AJAX 완료 콜백에서 시간 제한을 다시 설정해야 당신이 AJAX를 사용하는 경우 :

$(document).ajaxComplete(keepAlive); 

하는 것은 어려울 것이다 100 % 신뢰할 수있는 제품입니다. 확인 콜백의 AJAX 요청이 실제로 상태 서버에 닿아 야하고 AJAX 요청이 실패 할 때 어떤 일이 발생하는지 처리해야합니다. 이러한 스크립트가 있어도 세션이 만료 될 수있는 사항입니다.

동전의 다른면이 필요 이상으로 자주 튀어 나오는 곳입니다. 예를 들어, 자바 스크립트를 통해 DOM에 이미지를 추가하고 해당 이미지 검색이 상태를 변경하는 경우 해당 요청은 세션이 새로 고침되었지만 자바 스크립트 시간 초과를 다시 설정하지 않습니다.