我試圖建立我自己的Zend_Session_SaveHandler基於此代碼 http://blog.digitalstruct.com/2010/10/24/zend-framework-cache-backend-libmemcached-session-cache/Zend_Session_SaveHandler_Interface和SESSION_ID mysterie
這個偉大的工程,但我的session_id表現神祕。 我正在使用Zend_Session_SaveHandler_Cache類,因爲您可以在上面的博客中找到它(除了將它停放在我自己的庫中,因此它的名稱現在以My_開頭)。
在我的引導,我有:
protected function _initSession()
{
$session = $this->getPluginResource('session');
$session->init();
Zend_Session::getSaveHandler()->setCache($this->_manager->getCache('memcached'));
}
得走了基於此代碼在我的.ini文件
resources.cachemanager.memcached.frontend.name = Core
resources.cachemanager.memcached.frontend.options.automatic_serialization = On
resources.cachemanager.memcached.backend.name = Libmemcached
resources.cachemanager.memcached.backend.options.servers.one.host = localhost
resources.cachemanager.memcached.backend.options.servers.one.port = 11213
到目前爲止好我的會議。直到有人試圖登錄並調用Zend_Session :: rememberMe()。 Zend_Session中的註釋可以閱讀
正常「了rememberMe()」代表安全上下文的變化,因此 應該使用新的會話ID
這當然是很真實的,一個新的會話id被生成。用戶Zend_Auth數據在成功登錄後寫入此新會話。我可以看到這一點,因爲我在博客中爲原始類添加了一些日誌記錄功能。
這裏是事情出錯的地方。顯然,這個新的ID並沒有在Zend_Session上傳遞,因爲Zend_Session持續讀取舊ID的會話數據。換句話說,沒有Zend_Auth實例。因此,用戶不能再登錄。
所以問題是,如何使我的saveHandler在重新生成後使用新的id工作? 歡呼任何幫助。