【问题标题】:Prevent ajax calls from updating session timeout with CakePHP使用 CakePHP 防止 ajax 调用更新会话超时
【发布时间】:2016-06-24 11:05:29
【问题描述】:

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

setInterval(demo, 3000);

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

作为 url 一个指向返回 JSON 的 CakePHP 控制器操作的 URL。

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

有什么解决办法吗?

【问题讨论】:

  • 使用 Cake3 Cake2 标签。为两个版本都标记一个问题没有多大意义。
  • stackoverflow.com/questions/32298817/… 那是针对 3.x 的,但在 2.x 中是相同的概念,所以...

标签: cakephp cakephp-2.7


【解决方案1】:

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

【讨论】:

    【解决方案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());
                }
    

    【讨论】:

      猜你喜欢
      • 2015-11-24
      • 2021-07-05
      • 2014-07-16
      • 1970-01-01
      • 2017-09-08
      • 2012-06-10
      • 1970-01-01
      • 2015-03-10
      • 1970-01-01
      相关资源
      最近更新 更多