EXT JS Session Timeout - PullRequest
       7

EXT JS Session Timeout

0 голосов
/ 11 апреля 2011

EXT JS - я хотел бы знать, как проверить ответ json на время ожидания сеанса, например, если пользователь простаивает, скажем, 20 минут или около того, если его сеанс истек или нет

Ответы [ 2 ]

1 голос
/ 18 апреля 2011

Вы можете смоделировать сеанс тайм-аута ...

 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 голос
/ 12 апреля 2011

В ExtJS нет стандартного способа обработки тайм-аутов сессии.ExtJS - это клиентская библиотека, используемая для создания пользовательского интерфейса / интерфейсного уровня приложения, в то время как управление сеансами осуществляется на стороне сервера.

В запросах ExtJS Ajax реализован механизм обратного вызова.Это означает, что определенная функция Javascript назначена в качестве функции обратного вызова, которая вызывается, когда запрос Ajax завершился (успешно или безуспешно).Вот пример, взятый из Документация по ExtJS API - см. Параметры успеха и неудачи, которые определяют функции обратного вызова:

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

Итак, в случае тайм-аута сеанса вы можете (например)создайте ответ JSON, который будет содержать некоторый код ошибки (определенный вами) и сообщение об ошибке, которое будет показано пользователю.Затем функция обратного вызова должна проверить, возвращена ли эта ошибка с сервера, и предпринять необходимые действия (показать сообщение об ошибке, перенаправить на страницу входа и т. Д.), Когда это произойдет.

Обратите внимание, что в приведенном выше случае отС точки зрения ExtJS, Ajax-запрос будет действительно успешным.Когда HTTP-запрос вообще не выполняется (ошибки HTTP, например, 403 и т. Д.), Ajax-запрос считается неудачным.Это важно, потому что обычно можно определить различные функции обратного вызова для успешных и неудачных запросов (как в приведенном выше примере кода).

...