2013-09-26 2 views
0

내 Play Framework 2.1.2 애플리케이션이 있으며 사용자가 로그 아웃하거나 브라우저를 닫은 후에 정리 지침을 실행해야합니다. my other question에 내가 닫는 동작을 가로 채는 방법을 물었고 브라우저에서 자바 스크립트를 사용하는 것이 신뢰할 수 없다고 들었습니다. 서버 측 세션 시간 초과 이벤트를 사용하여 사용자가 사라진 것을 확인하고 싶습니다.재생 프레임 워크 2에서 시간 초과 세션이있는 사용자 식별

그래서 얻을하고자하는 흐름이 하나와 유사한 : 생성

  • 의 세션에서

    1. 사용자가 로그인
    2. 사용자가 내 웹 응용 프로그램
    3. 사용자와 함께 작동 로그 아웃/브라우저 닫기 ---> 세션이 만료 됨
    4. 그는 플랫폼에 더 이상 없으므로 db에 대한 작업을 수행 할 수 있습니다.

    세션이 만료 될 때 무시할 수있는 방법을 찾지 못했습니다. 누군가가 해결책을 향해 나를 가리킬 수 있습니까?

    결국 또 다른 수용 가능한 해결책은 더 이상 연결되지 않은 사용자를 반복적으로 확인하고 더 이상 연결되지 않은 해당 사용자 풀에서 대량 작업을 수행하는 일정 시간 초과 이벤트입니다. 이것을 달성하는 방법?

  • +0

    이 비슷한 질문을 살펴보십시오 http://stackoverflow.com/questions/3679465/find-number-of-active-sessions- created-from-a-given-client-ip – WeMakeSoftware

    답변

    1

    또한 세션 시간 초과가 필요하므로 세션에 시간 기록 (틱)을 추가하고 시간 제한을 확인한 후 각 요청마다 업데이트했습니다. 이 같은

    뭔가 :

    // see if the session is expired 
    String previousTick = session("userTime"); 
    if (previousTick != null && !previousTick.equals("")) { 
        long previousT = Long.valueOf(previousTick); 
        long currentT = new Date().getTime(); 
        long timeout = Long.valueOf(Play.application().configuration().getString("sessionTimeout")) * 1000 * 60; 
        if ((currentT - previousT) > timeout) { 
        // session expired 
        session().clear(); 
        return null; 
        } 
    } 
    // update time in session 
    String tickString = Long.toString(new Date().getTime()); 
    session("userTime", tickString); 
    

    http://www.poornerd.com/2014/04/01/how-to-implement-a-session-timeout-in-play-framework-2/

    관련 문제