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