2010-06-02 47 views
0

我有一個子一個Rails應用程序 - xyz.domain.com,而在另一子域的PHP應用程序 - abc.domain.com如何在PHP中使用Rails中的相同域進行會話時創建會話?

當用戶登錄到Rails應用程序,我想給他們一個會話,以便我可以在PHP應用程序中記錄有關該用戶的某些事件,但可以在Rails應用程序的相同數據庫中記錄。我基本上只是公開一個需要身份驗證的API。

什麼是最好的方式去做這件事?我不是在數據庫中存儲會話

UPDATE 我應該指出,我們的目標是允許從PHP網站數據庫已僅使用Rails應用程序迄今爲止的認證接入。如果用戶登錄到Rails應用程序,我希望能夠跟蹤PHP網站上發生的任何事件並將它們與用戶關聯起來。

回答

0

我認爲會議是不可能的。如果可以在子域之間共享相同的數據庫,則可以使用數據庫來存儲身份驗證。

2

我會回覆,不知道很多關於Rails的信息。

您可以在php.ini中使用customize the cookie name。在會話名稱和正確的Cookie域之間,您可以創建一個將由這兩個應用程序共享的cookie。

PHP術語中的「會話」只意味着一個cookie,其值指向會話存儲中的一些保存數據集。例如,如果PHP(使用默認配置)看到一個cookie PHPSESSID=2b00042f7481c7b056c4b410d28f33cf,它將查找像/tmp/sess_2b00042f7481c7b056c4b410d28f33cf這樣的會話文件。該文件只包含serialize($_SESSION)的輸出。

因此,共享會話將共享此cookie值,但本質上沒有其他任何內容。如果PHP要插入日誌記錄,則必須決定如何共享其他值。一些選項:

  1. 如果PHP會話爲空,請在Rails應用程序中查詢提供登錄用戶名和其他會話詳細信息的URL。確保URL只能從本地主機訪問。
  2. 將會話ID等同於數據庫中的用戶名/ ID,以便PHP可以進行查找。
+0

好的。我剛剛添加了關於我的最終目標的信息。我認爲共享cookie會起作用,但我不確定該交易的流程是什麼樣子。 – Tony 2010-06-02 14:19:20

+0

謝謝,我已經更新了一下我的答案。希望這可以幫助。 – 2010-06-03 10:18:55