2013-11-21 2 views
1

Slim Framework를 백 엔드로 사용하고 Backbone.js를 프런트 엔드 프레임 워크로 사용하고 있습니다.백엔드에서 세션 시간이 초과되면 프런트 엔드에서 로그 아웃하는 방법은 무엇입니까?

  • 사용자가 영수증을 요청하기 위해 웹 사이트를 방문 : 아래에 언급 한 바와 같이 응용 프로그램은 사용자가 양식을 제출하고 그들이 할 때, 그들은 특정 데이터와 메일/PDF 영수증을받을 수 있도록 만든이 수행된다.
  • 사이트에서 로그인하라는 메시지가 표시됩니다.
  • 정보를 입력하면 세부 정보 (사용자 이름, 이메일 등)가 세션에 저장됩니다.
  • api 호출을 통해 Backbone.js/프런트 엔드를 사용하여 양식을 제출하면 데이터가 수신되고 확인이 생성됩니다.
  • 영수증을 생성하는 동안 세션 (사용자 이름, 전자 메일)에 저장된 세부 정보가 사용됩니다.
  • 일단 완료되면 영수증을 우편으로 발송합니다.

문제 시나리오는 :

사용자는 로그인 할, 양식의 몇 가지 세부 사항을 작성 후 매우 긴 오픈 응용 프로그램을 떠난다. 서버 쪽 세션 시간이 초과되었지만 프런트 엔드는 동일하게 유지됩니다. 그런 다음 사용자가 다시 돌아와 양식의 나머지 부분을 채 웁니다. 그러나 세션이 시간 초과되었으므로 background (username, email)에 설정된 변수가 null을 반환하고 응용 프로그램이 실패하거나 예상대로 작동하지 않습니다.

세션 만료에 대해 사용자에게 알리고 응답이 없으면 프런트 엔드에서 로그 아웃하려고합니다. 또한 사용자가 브라우저/탭을 닫으면 세션을 로그 아웃하고 싶습니다.

답변

2

사용자가 몇 초 만에 로그인하는지 확인하려면 클라이언트 측 자바 스크립트가 필요하며, 서버 측에서도 여전히 로그인해야하는 경우 클라이언트에게 보내야합니다.

function checkIfLogin(){ 
Backbone.ajax({ 
    dataType: "jsonp", 
    url: "URL HERE", 
    data: "", // if you have data 
    success: function(data){ 
     if(!data.isStillLogin){ 
     // statement if not login 
     }else{ 
     // call again the checker 
     setTimeout(checkIfLogin, 10000); 
     } 
    } 
}); 
} 
checkIfLogin(); 
관련 문제