2015-07-02 95 views
2

我有幾個域都在同一臺服務器上,具有相同的IP和相同的數據庫 - 可以被所有5個域訪問。跨域登錄

我最近重新編寫了我的登錄系統,因此在我的主域中,cookie不僅適用於主域,還適用於子域。這意味着如果用戶登錄到一個區域,則它們都處於登錄狀態。太棒了!我使用他們的散列(從數據庫中獲取)編寫了一個cookie,並在加載每個頁面時檢查它們,並自動安全地登錄。

這很可愛,但問題出現在切換域時,被鎖定到域。所以我的其他域名(讓我們稱之爲domain2.com)無法從domain1.com讀取cookie。

有沒有什麼巧妙的方法可以解決這個問題?我可以寫數據庫的東西,比如IP,但是那不是非常安全,因爲我爲每個人工作的公司都在同一個IP上,因此它不是特定的。

或者我想過可能在頁面上包含隱藏的iframe,它實際上鍊接到主服務器上的頁面,並以某種方式提取信息。

我不確定,但我確信它可以完成。有任何想法嗎?

+0

我不確定,但閃存cookie可能在域之間工作... – user1844933

+0

另一種方法,重定向到您的domain1.com並檢查cookie是否存在,然後重定向到domain2.com並使用cookie值 – user1844933

回答

0

瀏覽器出於好的理由不允許從任何其他域中讀取cookie。

您可以做的是將domain2.com重定向到domain1.com上的一個頁面,該頁面檢查用戶是否已登錄,如果他們是用用戶的id重定向回domain2.com,然後可以登錄

-1

你不應該依賴原始的PHP會話函數集合。
以下是我所做的:


登錄成功後,服務器端應該返回一個「會話ID」給瀏覽器並通過JavaScript存儲或者如何,意味着「會話ID」應該作爲數據庫存儲在數據庫中如果需要,您可以在會話ID旁邊做一個登錄時間。

現在你可以在你想要的任何IP服務器上共享會話ID,並讓你的客戶端連接到(像重定向到新域併發布SID的一些技巧),然後建立一個PHP會話。