使用 CakePHP 防止 ajax 调用更新会话超时
Prevent ajax calls from updating session timeout with CakePHP
我在 JavaScript 中使用了这种长池:
setInterval(demo, 3000);
function demo(){
$.get(url, params, function(data){
//whatever
});
}
作为 url
返回 JSON 的 CakePHP 控制器操作的 URL。
但我希望我的会话自用户在屏幕上最后一次操作后仅持续 20 分钟。也就是说,忽略每 30 秒发生一次的池化。
否则会话将永远持续。
有什么解决办法吗?
在请求发生时将上次登录时间存储在会话中,将其与请求进入时的当前时间进行比较。如果当前时间大于上次登录时间 + 20 分钟,则调用 logout() method of the auth component。
请在应用程序控制器的 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());
}
我在 JavaScript 中使用了这种长池:
setInterval(demo, 3000);
function demo(){
$.get(url, params, function(data){
//whatever
});
}
作为 url
返回 JSON 的 CakePHP 控制器操作的 URL。
但我希望我的会话自用户在屏幕上最后一次操作后仅持续 20 分钟。也就是说,忽略每 30 秒发生一次的池化。 否则会话将永远持续。
有什么解决办法吗?
在请求发生时将上次登录时间存储在会话中,将其与请求进入时的当前时间进行比较。如果当前时间大于上次登录时间 + 20 分钟,则调用 logout() method of the auth component。
请在应用程序控制器的 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());
}