2016-08-04 30 views
0

Um völlig klar zu sein, ich meine definitiv teilen Sitzungen zwischen Domänen, nicht nur Sub-Domains.Teilen Sie ein Login-Cookie/Sitzung zwischen Domänen in Rails 5

Wie auch immer, stellen Sie sich Tumblr vor, wo Sie auf <name>.tumblr.com auf ein Blog zugreifen können, aber Sie können es auch einrichten, um eine benutzerdefinierte Domäne zu verwenden.

Wir versuchen, etwas Ähnliches zu tun. Sie können wie gewohnt auf Ihren Teil unserer Website zugreifen oder Sie können ihn so einrichten, dass Sie mit einer benutzerdefinierten Domain Ihren Teil der Site besuchen können.

Der wichtige Teil hier ist, dass unabhängig davon, welche Domäne verwendet wird, es von der gleichen Box behandelt wird. Dies ist kein SSO per se, da wir nur von verschiedenen Domains auf die gleiche Rails-App zugreifen.


Wie dem auch sei, die Frage: Was ist der beste Weg, es zu machen, so dass, wenn ein Benutzer in unserer Haupt-Website angemeldet ist, müssen sie nicht erneut anmelden, wenn unsere Website über einen benutzerdefinierten Domain-Besuch .

Im Wesentlichen möchten wir sicherstellen, dass sich ein Benutzer einmal anmeldet und weiterhin angemeldet bleibt, unabhängig davon, welche Domain er für den Zugriff auf unsere Website verwendet hat.

Jeder Rat wird geschätzt!

Antwort

0

Sie können die Sitzung in iframe auf Ihrer Hauptdomain speichern und darauf zugreifen, indem Sie postMessage.

Sie können iframe laden enthält so etwas wie:

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

und Ereignis-Listener auf Seite mit diesem iframe Prozess Diese Nachricht:

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); 
} 

Hinweis: Event-Listener vor iframe Laden hinzugefügt werden soll.