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

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

setInterval(demo, 3000);

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

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

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

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

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());
            }

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

Другие вопросы по тегам