2011-04-11 1 views
0

EXT JS - 내가 거기EXT JS 세션 제한 시간

+1

의 ExtJS 세션 관리를 할 수있는 훨씬이 없습니다. 응용 프 로그 램의 프론트 엔드를 빌드하기위한 클라이언트 측 라이브러리입니다. 세션 관리는 서버 측에서 이루어지며 프론트 엔드로 ExtJS를 사용하더라도 큰 차이는 없습니다. – Tommi

+0

그래서 내가 서버 측에서 예외를 발생시키고 EXT에서 처리한다는 것을 의미합니까? – extjsnewbie

+0

ExtJS로 Ajax 요청을하고 세션이 만료되어 실패하면 ExtJS에서 해당 오류를 catch하고 필요한 조치 (메시지 표시, 로그인 페이지로 리디렉션)를 취하는 것이 좋습니다. – Tommi

답변

1

을 20 분 말 또는 그렇게 자신의 세션이 만료되면 여부를 사용자가 유휴 상태 인 경우 같은 세션 시간에 대한 JSON 응답을 확인하는 방법을 알고 싶습니다 ExtJS에서 세션 시간 제한을 처리하는 표준 방법은 없습니다. ExtJS는 클라이언트 측 라이브러리로, 응용 프로그램의 사용자 인터페이스/프런트 엔드 계층을 만드는 데 사용되며 세션 관리는 서버 측에서 수행됩니다.

ExtJS Ajax 요청은 콜백 메커니즘을 구현합니다. 즉, Ajax 요청이 완료되면 (성공적으로 또는 실패한 경우) 호출되는 특정 Javascript 함수가 콜백 함수로 할당됨을 의미합니다. 여기에 예제가 ExtJS API Documentation에서 가져온 것 - 콜백 함수를 정의하는 매개 변수의 성공과 실패를 참조하십시오

// Basic request 
Ext.Ajax.request({ 
    url: 'foo.php', 
    success: someFn, 
    failure: otherFn, 
    headers: { 
     'my-header': 'foo' 
    }, 
    params: { foo: 'bar' } 
}); 

그래서를, 세션 시간 초과의 경우에, 당신은 (예를 들어) 몇 가지 오류를 포함 할 것이다하는 JSON 응답을 구성 할 수 코드 (사용자가 정의) 및 사용자에게 표시 할 오류 메시지가 표시됩니다. 그런 다음 콜백 함수는 서버에서이 오류가 반환되었는지 확인한 다음 오류 발생시 필요한 조치 (오류 메시지 표시, 로그인 페이지로 리디렉션)를 수행해야합니다.

위의 경우 ExtJS 관점에서 보면 Ajax 요청이 실제로 성공한 것입니다. HTTP 요청이 모두 실패하면 (403과 같은 HTTP 오류 등) Ajax 요청은 실패한 것으로 간주됩니다. 이는 대개 성공과 실패 요청에 대해 서로 다른 콜백 함수를 정의 할 수 있기 때문에 중요합니다 (위의 샘플 코드 에서처럼).

당신은 타임 아웃 세션을 조롱 할 수
1

...

var keepaliveHandler = new Ext.util.DelayedTask(function(){ 
    Ext.Ajax.request({ 
     url : '/keepalive', 
     method : 'GET', 
     success: function(response, options){ 
//dummy server call each 60 seconds 
      keepaliveHandler.delay(60000); 
     } 
    }); 
}); 
var timeoutHandler = new Ext.util.DelayedTask(function(){ 
//invalidate session 
    Ext.Ajax.request({ 
     url : '/logout', 
     method : 'GET', 
     success: function(response, options){ 
      Ext.MessageBox.show({ 
       title: MessagesMap.getMessage('session.closed'), 
       msg: MessagesMap.getMessage('session.closed.message'), 
       buttons: Ext.MessageBox.OK, 
       fn: function() { 
        window.location.pathname = '/';     
       }, 
       icon: Ext.MessageBox.WARNING 
      }); 
     } 
    }); 
}); 
if(Ext.ux.SystemProperties.isLogged) { 
    keepaliveHandler.delay(60000); 
    timeoutHandler.delay(Ext.ux.SystemProperties.timeout); 
//check for mouse movements 
    document.body.onmousemove = function(e) { 
     timeoutHandler.delay(Ext.ux.SystemProperties.timeout); 
    }; 
} 
+1

답장을 보내 주셔서 감사합니다. 새 세션이 시작되고 사용자의 인증 쿠키가 만료되었을 때 세션 시간 초과를 나타내는 오류 메시지가 포함 된 응답을 반환합니다. – extjsnewbie