2013-02-09 2 views
1

어떻게 이것을 Asp.Net MVC에서 할 수 있습니까?asp.net mvc에서 세션을 처리하는 방법

  • 활동 타이머 : 사용자가 페이지에서 이동하면 (즉, ActionResult을 호출하는 것을 의미) 타이머가 재설정됩니다.
  • 사용자가 15 분 이상 아무런 활동도하지 않으면 "아직 거기 있습니까?"라는 메시지가 표시됩니다. (예/로그 아웃), 예를 클릭하면 활동 타이머가 0으로 돌아가고 다시 카운팅을 시작합니다.
  • 이 활동 타이머는 사용자별로 고유해야하며 로그 아웃시 삭제해야합니다.

제발! 제발! 환자가 되십시오! 나는 이것을 어떻게하는지 모른다.

이 게시했습니다 question하지만이 문제를 해결하는 모든 대답을 얻지 못했습니다. 그래서 나는 처음부터 그것을 할 계획이며, 제대로 할 수있는 도움이 필요합니다.
참조 링크 또는 자습서를 참조하십시오.

+0

나는 뭔가를 놓칠지도 모르지만 나는 당신이 행동 필터없이 이것을 할 수 있다고 생각한다. 나는 타이머가 각 뷰 렌더링 (로그인 한 경우)시 재설정되고, 15 분 후 시작한 다음, 응답 한 후 다시 설정됩니다. 그렇다면 상당히 단순한 디자인이라고 생각할 수 있습니다. –

+0

큰 질문입니다! –

답변

1

나는 이것을 클라이언트에서 처리 할 것이다. 기능을 캡슐화 할 객체를 만듭니다. 같은

뭔가 : 비활성 이벤트가 발생하기 전에 통과 (초)에

var UserInactivityMonitor = UserInactivityMonitor || {}; 
UserInactivityMonitor = (function (module) { 
    var inactivityIndex; 
    var promptIndex; 
    var timer; 

    module.startInactivityMonitor = function() { 
     module.timerTick(); 
    }; 

    module.timerTick = function() { 
     inactivityIndex--; 
     if (inactivityIndex === 0) { 
      module.fireInactivityAlert(); 
     } 

     if (inactivityIndex === promptIndex) { 
      module.fireIdlePrompt(); 
     } 

     timer = setTimeout(module.timerTick, 1000); 
    }; 

    module.fireIdlePrompt = function() { 
     var response = confirm('are you stil there?'); 
     if (response === true) { 
      module.resetInactivityIndex(); 
     } 
    }; 

    module.resetInactivityIndex = function() { 
     inactivityIndex = 15; 
     promptIndex = 5; 
    }; 

    module.fireInactivityAlert = function() { 
     alert('Inactivity alert!'); 
    }; 

    module.initialize = function() { 
     module.resetInactivityIndex(); 
     module.startInactivityMonitor(); 
    }; 

    return module; 
})(UserInactivityMonitor || {}); 

설정 inactivityIndex. promptIndex를 남은 시간 (초)으로 설정하여 사용자에게 메시지가 표시 될 때까지 기다립니다. 위의 코드는 비활성 시간 초과를 15 초로 설정하고 나머지 5 초에 유휴 프롬프트가 호출됩니다. 다시, 카운터 어떤 AJAX 요청에

$(function() { 
    UserInactivityMonitor.initialize(); 
}); 

: 서버가 세션 상태를 유지하고

$("#fooButton").on('click', function() { 
     $.ajax(
      { 
       url: $("#buttonClickPostUrl").val(), 
       data: { 
        someData: 'data' 
       }, 
       type: 'POST', 
       complete: function() { 
        UserInactivityMonitor.resetInactivityIndex(); 
       } 
      }); 
    }); 

경우에 당신이 요청을 확인하는 것이 좋습니다를 페이지로드

비활성 타이머를 시작합니다 서버로 돌아가서 세션을 종료하고 선택적으로 브라우저를 이벤트에 적합한 페이지로 안내합니다. fireInactivityAlert() 함수에서이 작업을 수행합니다.

+0

'$ (document) .click (function() {// Call UserInactivityMonitor}); '페이지에서 모든 클릭 이벤트를 catch하고이를 활동으로 간주하고 타이머를 다시 설정해야한다는 뜻입니까? – fiberOptics

+0

정확하지 않습니다. ajax 요청 코드 샘플 또는 페이지로드 샘플을 언급하고 있습니까? 전체 페이지로드가 발생할 때마다 (IE, 처음 페이지 사용 요청이 있음) 비 활동 타이머를 시작하려고합니다. 페이지로드 샘플은 jQuery를 사용하여이를 수행하는 방법을 보여줍니다. ajax 코드 샘플은 ajax 요청 완료시 비활성 카운터를 재설정하는 방법 (실패 또는하지 않음)을 보여 주며 샘플은 jquery를 사용하여 ajax 요청을 표시합니다. 이 샘플을 기존 코드 기반으로 만들어야합니다. ajax 샘플에서 벗어난 것은 resetInactivityIndex() 함수 호출입니다. – Neiliux

관련 문제