2008-09-19 10 views
5

Ich möchte einige Rails-Apps über verschiedene Server haben, die sich dieselbe Sitzung teilen. Ich kann es innerhalb desselben Servers tun, aber weiß nicht, ob es möglich ist, über verschiedene Server zu teilen. Wer hat es schon gemacht oder weiß es?Rails Sessions über Server

Danke

Antwort

3

Je nachdem, wie Ihre Anwendung eingerichtet ist, können Sie können leicht Cookies von Websites in derselben Domäne teilen (foo.domain, bar.domain, Domain), indem Sie Ihre Apps Einrichtung das gleiche Geheimnis zu verwenden: http://www.russellquinn.com/2008/01/30/multiple-rails-applications/

Nun, wenn Sie verschiedene Websites wie sdfsf.com, dsfsadfsdafdsaf.com usw. haben, müssen Sie eine Menge mehr Tricks tun, weil die Natur der Cookies sie auf die spezifische Domäne beschränkt. Im Wesentlichen versuchen Sie Cross-Site-Scripting zu verwenden, um Ihre Sitzung zu lesen, anstatt sie zu entführen.

In diesem Fall, eine Kombination der Verwendung des gleichen Cookie-Geheimnis usw. und dann einige Cross-Site-Scripting können Sie manuell extrahieren Sie die Sitzung Informationen und neu erstellen es auf jeder Website (oder wenn Sie ActiveRecord-Sitzung {oder NFS-Sitzung verwenden) dir}, verbinde dich mit dem bestehenden). Es ist nicht einfach, aber es kann gemacht werden.

Oder die Low-Tech-Art (die ich vorher getan habe) ist einfach die Login-Seite besuchen Sie eine speziell gestaltete Login-Seite auf jeder Website, die einen App-Cookie setzt und springt Sie zum nächsten. Es ist nicht schön.

0

Versuchen Sie, datenbankgestützte Sitzungen zu verwenden.

6

Verwenden Sie die Database Session store. Die kurze davon ist dies:

die Tabelle zu erzeugen, an der Konsole laufen

rake db:sessions:create 

in Ihrem environment.rb, umfassen diese Zeile

config.action_controller.session_store = :active_record_store