0

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

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

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

我的问题是:“为什么并发 Ajax 调用会导致这种行为,我该怎么办?”

我想要一个不涉及牺牲 ajax 请求的异步性质或系统安全性的解决方案。

谢谢你。

4

1 回答 1

1

听起来像是经典的比赛条件。请参阅这篇精彩的文章: http: //www.chipmunkninja.com/Troubles-with-Asynchronous-Ajax-Requests-g@

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

于 2012-12-21T14:27:25.870 回答