Zend框架:并发ajax调用导致用户注销



在我的Zend应用程序中,我有几个Ajax操作来拉入表单或json数据数组。

当两个Ajax操作并发发生时(来自同一个登录会话),其中一个会返回登录屏幕。此外,有时(但不是每次)这还会导致用户在从应用程序请求另一个页面时注销。在调试时,我发现在以下代码中(在我们的LoginRequired helper中)运行if子句。此子句不会在站点的正常操作下运行,除非用户实际注销。

$auth = Zend_Auth::getInstance();
if(!$auth->hasIdentity()){
   ...
}

我的问题是:"为什么并发Ajax调用会导致这种行为,我能做些什么?"

我想要一个既不牺牲ajax请求的异步特性也不牺牲系统安全性的解决方案。

谢谢。

听起来像一个经典的竞争条件。请看这篇很棒的文章:http://www.chipmunkninja.com/Troubles-with-Asynchronous-Ajax-Requests-g@

想到的解决方案包括更快地关闭会话或重写session_set_save_handler()

最新更新