2008-11-08 9 views
9

Kennt jemand Edelsteine, Lernprogramme oder Lösungen, die es einem Benutzer ermöglichen, sich auf einer Website in einer Domäne anzumelden und automatisch Zugriff auf andere Partnerdomänen in derselben Sitzung zu erhalten?Wie kann ich Benutzersitzungen über mehrere Domänen mit Rails teilen?

Ich habe zwei Rails Apps laufen, nennen wir sie App-A und App-B. App-A ist eine Datenbank zugeordnet, die die Registrierung und Anmeldung bei App-A.com antreibt. Ich möchte nun allen Benutzern mit App-A.com-Konten Zugriff auf App-B.com gewähren, ohne dass sie sich neu registrieren oder sich manuell bei App-B.com anmelden müssen.

Vielen Dank im Voraus für jede Hilfe! --Mark

Antwort

5

Sie können den gleichen session_key in beiden Apps festlegen. In der appA environment.rb ändern Sie den session_key, so

Rails::Initializer.run do |config| 
    ... 
config.action_controller.session = { 
    :session_key => '_portal_session', 
    :secret  => '72bf006c18d459acf51836d2aea01e0afd0388f860fe4b07a9a57dedd25c631749ba9b65083a85af38bd539cc810e81f559e76d6426c5e77b6064f42e14f7415' 
    } 
    ... 
end 

Machen Sie das gleiche in AppB. (Denken Sie daran, das gleiche Geheimnis zu verwenden)

Jetzt haben Sie Sitzungen geteilt. Angenommen, Sie verwenden restfull_authentication, das eine Sitzungsvariable namens user_id festlegt. Wenn Sie sich in AppA authentifizieren, wird die Benutzer-ID in der Sitzung festgelegt. Jetzt müssen Sie in appB nur überprüfen, ob user_id in der Sitzung existiert.

Dies ist das Gesamtschema, Sie können mehr mit dieser Idee erarbeiten.

+3

Von was ich sagen kann, würde dies nur funktionieren, wenn beide apps auf der gleichen Domain sind? – gtd

+2

Das ist richtig, diese Lösung funktioniert nicht über mehrere Domänen hinweg. – TuteC

1

Wenn Sie eine Single-Sign-On-Lösung für Ihre Anwendungen erstellen möchten, sollten Sie sich die Lösung RubyCAS ansehen. Es kann auch verwendet werden, um Single Sign-On für andere Nicht-Rails-Anwendungen bereitzustellen, und Sie können die Authentifizierung mit LDAP oder anderen Authentifizierungsanbietern integrieren.