2012-03-13 53 views
1

爲了「共享」多個域之間的同一會話,我希望兩個會話具有相同的數據庫/ memcache密鑰。在Rails的域/瀏覽器之間傳輸cookie

例如,我希望foo.com和bar.com基本相同。很顯然,如果用戶獨立訪問這兩個域名(訪問foo.com,登錄,然後在bar.com中鍵入),則不可能這樣做。但是,如果我從一個域名重定向到另一個域名,這應該是可能的。

bar.com/x重定向到foo.com/y?_cookie_key=abc

上foo.com一些中間件可以檢測_cookie_key參數,然後使用該密鑰ABC,而不是檢索Cookie存儲會話不管它會如何做。中間件會根據該密鑰設置當前會話,並將其設置爲域/瀏覽器的cookie中新的cookie存儲密鑰。

雖然這看起來理論上可行,但它也似乎有點毛茸茸的,也許需要黑客機架。我希望以前有人這樣做,可以提供一些指導或威懾。

+0

是不是它設置在foo上的cookie不會轉移到bar的問題?如果您將會話存儲在共享的數據庫/ redis/etc中而不是cookie,則可以使用會話ID進行重定向。但Cookie仍然需要存儲一些憑據。我也對專家的回答感興趣 – 2012-06-26 14:53:13

回答

0

讓說你有使用相同的代碼/ DB

我想你可以檢查服務器名是主域,如果沒有一箇中心區和一些停放的域名,有一箇中間件腳本, 到您傳遞一個301重定向與get vars設置cookie的數據,所以用戶在那裏重定向 ,並從那裏,重定向回referrel鏈接,添加一個獲取標誌,以停止重定向循環 (檢查此標誌是未設置的主要檢查如果)

如果所有這個帖子和重定向通過ajax發生,用戶將永遠不會看到一件事...