2012-12-21 57 views
0

在我的Zend應用程序中,我有幾個Ajax操作來提取表單或json數據數組。Zend框架:併發ajax調用導致用戶被註銷

當兩個Ajax操作同時發生時(來自相同的登錄會話),其中一個會返回登錄屏幕。此外,有時(但不是每次都發生),這也導致用戶在從應用程序請求另一個頁面時被註銷。在調試時,我發現在下面的代碼中(在我們的LoginRequired助手中)運行if子句。除非用戶實際註銷,否則此子句不在網站的正常操作下運行。

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

我的問題是:「?併發Ajax調用爲什麼會導致這種行爲,我能做些什麼吧」

我想要一個不涉及犧牲ajax請求的異步性質和系統安全性的解決方案。

謝謝。

+0

我們有一個情況,一旦當瀏覽器沒有隨請求提供PHP會話識別器。我們必須添加它來手動請求。如果是這種情況,請檢查螢火蟲。 – akond

回答

1

聽起來像一個經典的競賽條件。請參閱這篇大文章:http://www.chipmunkninja.com/[email protected]

解決方案,浮現在腦海中包括閉幕式遲早改寫session_set_save_handler()

+0

修改完畢後,我試過立即關閉會話。這沒有任何作用。我無法在此環境中重寫session_set_save_handler。 –

+0

什麼阻止你編寫自己的會話處理程序? – ficuscr

+0

會話處理是ZEND框架的一部分,不屬於應用程序代碼的一部分。所以我會介紹一個升級問題。我不是嗎? –