Frage

Im Moment habe ich eine Ruby on Rails-System, und es gibt Pläne, die Portierung auf GWT. Bevor wir dies tun, dass die Befugnisse ein Proof of Concept wollen werden mit einem Teil haben, von der Seite in GWT geschrieben zu zeigen, dass GWT kann den aktuellen Inhalt verwenden und anzuzeigen. Der Datenfluß in dem GWT Teil des Systems ist wie folgt:

  1. Client sendet einen RPC-Aufruf an die GWT-Server
  2. Server empfängt RPC-Aufruf, dann macht eine äquivalente Ajax-Anforderung an den Rails-System
  3. Server erzeugt ein Java-Objekt aus dem Ergebnis des Ajax-Request, geht es zurück zum Client

Das Problem, das ich in bin jetzt läuft die Verwaltung von Benutzersitzungsdaten zwischen beiden Systemen. Wir haben nur 1 Tomcat-Instanz, und das hat seine eigene Art von Sitzungen, und dann unserem Ruby-System verwendet ActiveRecordStor zum Speicher von Sitzungsdaten in der Datenbank.

Das Problem hier ist, dass, wenn die Tomcat-System Gespräche mit dem Ruby-System, wenn die GWT Client eine Login-Anforderung gemacht hat, der letzten Benutzer aus dem GWT-System anmelden muss alle ausgehenden Anfragen Ajax in dem Rails-System durchgeführt wird, als wenn sie den aktuellen Benutzer, da die Tomcat-System sieht aus wie ein einzelner Client zu Rails sind.

Wie auch immer, wie kann ich es machen, so dass, wenn ein Benutzer eine Sitzung mit dem System Tomcat beginnt, wird das Ruby-System von dessen bewusst sein und eine gleichwertige Sitzung so, dass, obwohl der Tomcat-Server ein einzelner Client ist es, das Rails-System ist sich der Tatsache bewusst, dass viele verschiedene Benutzer von diesem einzigen Client mit ihm kommunizieren.

War es hilfreich?

Lösung

Ich denke, der beste Weg, dies zu lösen wäre, Cookies zu verwenden, anstatt eine Datenbank, die Sitzung zu speichern. Rails nativ unterstützt dies, es ist eigentlich der Standard-Cookie-Shop seit einiger Zeit. Das Cookie selbst wird von einem Server geheim unterzeichnet zu verhindern Benutzer Manipulation. Ich denke, die Rails-Implementierung verwendet Ruby-Marshalling zu dump / die Daten laden, so dass Sie es in Java implementieren können müssen, oder Sie können Ihre eigenen Cookie-Manager auf beiden Seiten mit der gleichen Idee umzusetzen.

Es ist auch möglich, nur den Ruby-Code zu verwenden, von JRuby in Ihrer Java-Anwendung.

Andere Tipps

Ich weiß nicht, über RoR, aber in den meisten Web-Technologien Sitzungen verwenden Cookies beibehalten. Wenn Sie die Cookies (für einen bestimmten Benutzer) über mehrere Anrufe von Ihrem Java-Server auf Ihre RoR Instanz erhalten, sollten Sie alle gut sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top