2011-05-27 223 views
4

我有一個場景,希望你的觀點。在不同的應用程序平臺之間共享會話

我在Django,Rails,PHP中開發了不同的Web應用程序,我希望他們每次都能共享相同的會話數據。意思是如果使用登錄到PHP應用程序,它可以自動登錄到Rails應用程序,反之亦然。

我知道它的某種中央認證服務器。其中一些是cas,josso

你有什麼意見呢。我想要Google Apps這樣的行爲,當我登錄到Gmail時,我也可以自動登錄到GoogleDocs。

請分享您的想法,那如何實現這個場景?

+0

我沒有測試過,但可能會存儲會話變量的XML文件格式和然後在您的應用程序中共享該文件。 – SIFE 2011-05-27 09:20:54

+0

這裏的問題是,每個框架或語言都以不同的方式實現會話(不同的後端,將其保存在後端等方式)。找到適用於它們的解決方案可能有點矯枉過正。 – 2011-05-27 09:34:05

+0

我目前使用rubycas-server來實現我的場景,我的工作正在進行,因爲它會成功更新答案。 – 2011-05-30 23:04:27

回答

-2

在我的應用程序中,我使用SESSION來存儲登錄用戶的值。例如$_SESSION['site1']['bakcend']['loggedin']=1;比在其他地方進行會話檢查。他們當然都在同一domain.tld如果你使用上面的例子$_SESSION['site1']['bakcend']['loggedin']=1;如果你有很多部分,你將需要很多檢查。但這只是一個意見,有一個更大的靈活性的地方。

您也可以使用cookie。

+0

$ _SESSION是唯一的PHP,需要handeling – borrel 2011-05-27 08:55:06

+0

如果您刪除downvote,我將不勝感激。我也添加了cookies作爲選項:) – RRStoyanov 2011-05-27 08:56:01

+0

在這個mater中使用cookies不安全 – borrel 2011-05-27 12:20:25

0

在PHP中,您可以使用session_set_save_handler來指定會話是如何持久化和恢復的。我猜Django和Ruby On Rails提供了類似的方式

2

Google完全在.google.com域運行,這就是爲什麼他們使用單個cookie在應用程序中識別您絕對沒有問題。如果您的應用程序都在同一個域上運行,那麼我會說繼續並編寫一個自定義實現來授權用戶使用共享會話cookie。

但是,如果情況並非如此,那麼最好在應用程序中分別實施一種更流行和廣泛使用的SSO方法,如OAuthOpenID,並讓用戶集中應用程序進行身份驗證,或讓他們通過外部提供商(如Facebook或Google,支持通過OpenID進行身份驗證)進行身份驗證

您可以運行自己的OAuth或OpenID端點,在該端點上用戶註冊,然後通過此端點進行身份驗證你的任何應用程序。

0

只是存儲在數據庫礦石會議自己處理他們完全

,最好的方法是創建一個特殊的表這 小心爲PHP希望在此時,相應的存儲之前,存儲這些數據sialized所以反序列化字段作爲序列化的數據實在是太難了在PHP處理

你有 $ _SESSION 和session_set_save_handler() ,但我認爲這是更好地爲您自己使它

確保所有網站使用單個cookie域(ajax onload(試圖獲得此coockie),或保持相同的域)

相關問題