使用CakePHP防止ajax调用更新会话超时

时间:2016-06-21 15:18:48

标签: cakephp cakephp-2.7

我在这种JavaScript中使用了一些长池:

setInterval(demo, 3000);

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

url作为返回JSON的CakePHP控制器操作的URL。

但是我希望自用户上次操作屏幕以来我的会话只持续20分钟。这就是,忽略每30秒发生一次的池化。 否则会话将永远持续。

对此有任何解决方案吗?

2 个答案:

答案 0 :(得分:2)

在请求发生时将最后一次登录时间存储在会话中,将其与请求进入时的当前时间进行比较。如果当前时间大于上次登录时间+ 20min,请拨打logout() method of the auth component

答案 1 :(得分:1)

请在beforeFilter功能

中的app控制器中使用此功能
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());
            }