Предотвратить 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.