如何防止CakePHP 3.0通过Ajax请求扩展会话超时?

达伦塞普斯

在对服务器进行后台Ajax调用时,如何防止CakePHP 3.x扩展我的用户会话?我也在使用jquery的$ .ajax()。

我有一个setInterval每分钟运行一次,以获取一些用户通知。我的应用程序是EHR,我需要保持严格的会话超时。我的获取通知Javascript基本上使我的会话不受限制,因为ajax调用扩展了会话。

我以为几周前在CakePHP书中看到了有关此内容的信息,但今天似乎找不到了。

谢谢,达伦

ndm

通常,这是您需要自己处理的事情,即实现自己的超时机制。如何处理,取决于。

您只想排除AJAX后台活动,因此您需要有权访问请求对象,并且您很可能希望尽早处理此事。鉴于此前提条件,我可能会使用调度程序过滤器,您可以在其中根据当前请求是否为AJAX请求来延长超时,并在涉及任何控制器之前销毁会话。

这是一个非常基本的示例,它假定timeout会话配置设置选项值

src / Routing / Filter / SessionTimeoutFilter.php

namespace App\Routing\Filter;

use Cake\Core\Configure;
use Cake\Event\Event;
use Cake\Routing\DispatcherFilter;

class SessionTimeoutFilter extends DispatcherFilter
{
    public function beforeDispatch(Event $event)
    {
        /* @var $request \Cake\Network\Request */
        $request = $event->data['request'];

        $session = $request->session();
        $lastAccess = $session->read('SessionTimeoutFilter.lastAccess');

        if (
            $lastAccess !== null &&
            time() - $lastAccess > Configure::read('Session.timeout') * 60
        ) {
            $request->session()->destroy();
        }

        if (!$request->is('ajax')) {
            $session->write('SessionTimeoutFilter.lastAccess', time());
        }
    }
}

src / config / bootstrap.php

DispatcherFactory::add('SessionTimeout');

当然,根据您的特定需求,您当然可以在您可以访问请求对象的应用程序中的几乎任何位置放置类似的代码。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何让Cakephp 3通过Apache环境变量选择数据库连接

来自分类Dev

Cakephp 3如何制作会话数组

来自分类Dev

CakePHP 3通过多个Auth会话“登录为”

来自分类Dev

如何扩展表类 CakePhp3

来自分类Dev

Cakephp3通过(自定义)验证到Flash消息

来自分类Dev

防止多次登录CakePHP3

来自分类Dev

如何在cakePHP3中删除特定用户的会话?

来自分类Dev

我如何获得模型中的会话?CakePHP 3.x

来自分类Dev

如何在cakePHP3中删除特定用户的会话?

来自分类Dev

如何在 CakePHP 3.x 中检查会话

来自分类Dev

Cakephp 3:如何接收获取请求数据?

来自分类Dev

cakePHP3:如何通过redirect()向操作发送参数?

来自分类Dev

如何使用boto3通过名称获取状态RDS实例

来自分类Dev

我如何使用python 3通过基本身份验证下载Teamcity工件

来自分类Dev

如何使用ionic 3和angular 4通过BLE发送数据?

来自分类Dev

如何转义mysql数据库名称以防止在cakephp3中进行sql注入?

来自分类Dev

CakePHP 3:如何更新foreignKey?

来自分类Dev

CakePHP 3丢失Auth会话

来自分类Dev

GMAP3通过Ajax填充多个标记地址

来自分类Dev

如何使用Google API版本3通过VS 2019部署到Google Store

来自分类Dev

如何使用Boto3删除SQS消息时防止连接超时

来自分类Dev

如何使用CakePHP 3将用户限制为一个会话?

来自分类Dev

CakePHP 3 和 jQuery Ajax

来自分类Dev

防止Ajax请求超时(jquery)

来自分类Dev

CakePHP 3:findById大于0

来自分类Dev

CakePHP 3 - 通过子域登录的会话配置

来自分类Dev

我如何防止超时

来自分类Dev

如何防止typo3 扩展owl_slider 加载jQuery

来自分类Dev

如何防止会话被盗?