2015-09-28 108 views
0

我面臨的問題超出了我的Zend Framework知識範圍,我希望你們可以提供幫助。在Zend Framework v1中的兩個系統之間共享會話

我有一箇舊的全功能系統安裝在我的服務器(我們稱之爲http://stable.server.com),它有一個非常古老的PHP版本。我打算將我的PHP版本升級到最新版本(希望在幾個月內,至少7個!),但是我的代碼使用了很多不推薦使用的函數,並且有一些代碼對PHP 5.6無效,但是對於較老的代碼版本。爲了遷移每個模塊,我進行了模塊劃分,對其進行測試,然後將其上傳到具有最新PHP版本的並行服務器(我們稱之爲http://updated.server.com)。當然,每個人都有不同的Zend安裝,具有相同的版本和配置文件。

當然,這些模塊之間有一些溝通,我希望保持變化對我的用戶來說最爲透明。所以當我從updated.server.com調用stable.server.com和viceversa時,我的應用程序要求我再次登錄。當我登錄這兩個系統時,這個通信是直接的,但我想避免用戶再次登錄。

¿你們有沒有做過這樣的事情?我當然希望有一種安全的方式來避免系統間的登錄,所以沒有人可以掛載假系統並從中登錄。

謝謝大家提前。

回答

1

我想你是看着兩個不同的問題。

  1. 會話在磁盤上寫入此信息需要在兩臺服務器之間共享。
  2. Cookie需要通過域/子域持久存在。

對於會話共享,您可以使用mysql會話存儲。 http://framework.zend.com/manual/1.12/en/zend.session.savehandler.dbtable.html http://framework.zend.com/manual/1.12/en/learning.multiuser.sessions.html https://github.com/sprain/PHP-MySQL-Session-Handler/blob/master/MySqlSessionHandler.php

你可以google一下有出有這麼多的解決方案。

2. Domain set cookie for subdomain

你可以設置你的Cookie是「.server.com」,那麼它將度過了所有的域。

這不是簡單的修復!但是一旦你完成了這個實現,你就可以在具有相同會話信息的不同機器上同時運行這兩個版本。