Предотвращение обновления тайм-аута сеанса вызовами ajax с помощью CakePHP

Я использую длинный пул в JavaScript такого типа:

setInterval(demo, 3000);

function demo(){
    $.get(url, params, function(data){
        //whatever
    });
}

Будучи url URL-адресом действия контроллера CakePHP, возвращающего JSON.

Но я хочу, чтобы мой сеанс длился всего 20 минут с момента последнего действия пользователя на экране. Это игнорирование объединения, которое происходит каждые 30 секунд. В противном случае сеанс будет длиться вечно.

Любое решение для этого?


person Alvaro    schedule 21.06.2016    source источник
comment
Используйте тег Cake3 или Cake2. Нет особого смысла помечать вопрос для обеих версий.   -  person floriank    schedule 21.06.2016
comment
stackoverflow.com/questions/32298817/ Это для 3.x, но это та же концепция в 2.x, так что .. .   -  person ndm    schedule 21.06.2016


Ответы (2)


Пожалуйста, используйте это в контроллере приложения в функции beforeFilter

if(!$this->request->is('ajax')){
             $LastActivity = $this->Session->read('LastActivity');
             if ($LastActivity != '' && (time() - $LastActivity) > 1200) {//for 20 minute
                $this->Auth->logout();
                $this->redirect('/');
            }
             $this->Session->write('LastActivity', time());
            }
person Sonu Verma    schedule 23.06.2016

Сохраните время последнего входа в сеанс, когда происходит запрос, сравните его с текущим временем, когда приходит запрос. Если текущее время больше, чем время последнего входа + 20 минут, вызовите метод logout() компонента аутентификации.

person floriank    schedule 21.06.2016