2016-08-04 59 views
0

爲了清楚起見,我的意思是共享域之間的會話,而不僅僅是子域。在Rails 5中分享域名之間的登錄cookie /會話

無論如何,想象一下Tumblr,您可以通過訪問<name>.tumblr.com來訪問博客,但您也可以將其設置爲使用自定義域名。

我們正在嘗試做類似的事情。您可以像往常一樣訪問我們網站的一部分,或者您可以設置它,以便您可以使用自定義域來訪問您網站的一部分。

這裏的重要部分是,不管使用哪個域,它都由同一個盒子處理。這不是SSO本身,因爲我們只是從不同的域訪問相同的Rails應用程序。


無論如何,這樣的問題:什麼是讓這個用戶是否在我們的主要網站登錄,他們沒有通過自定義域名訪問我們的網站時再次登錄的最佳途徑。

本質上,我們希望讓用戶登錄一次,而且無論他們用於訪問我們的網站的域是什麼,他們都會保持登錄狀態。

任何意見是讚賞!

回答

0

您可以將會話存儲在主域的iframe中,並通過postMessage訪問它。

可以加載iframe中包含類似:頁面上

parent.postMessage(JSON.stringify({user_id: <%[email protected] %>, token: <%[email protected] %>, etc...}), '<%= @target_origin || '*'%>'); 

和事件偵聽器與此iframe過程如下消息:

var listener = function (e) { 
    if (e.origin === correctIframeTarget) { 
    var data = JSON.parse(e.data); 
    // etc... 
}; 

if (window.addEventListener) { 
    window.addEventListener('message', listener); 
} else { 
    window.attachEvent('onmessage', listener); 
} 

注意:事件偵聽器應該的iframe裝載前加入。

相關問題