1

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

setInterval(demo, 3000);

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

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

但我希望我的会话自用户最后一次在屏幕上操作后仅持续 20 分钟。也就是说,忽略每 30 秒发生一次的池化。否则会话将永远持续下去。

有什么解决办法吗?

4

2 回答 2

2

当请求发生时将上次登录时间存储在会话中,将其与请求进入时的当前时间进行比较。如果当前时间大于上次登录时间 + 20 分钟,则调用auth 组件的 logout() 方法

于 2016-06-21T20:11:17.163 回答
1

请在 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());
            }
于 2016-06-23T13:30:03.067 回答