0

私は現在、Ruby on Rails システムを持っており、それを GWT に移植する計画があります。これを行う前に、GWT が現在のコンテンツを使用および表示できることを示すために、サイトの一部が GWT で記述されているという概念の証明が必要です。システムの GWT 部分のデータの流れは次のとおりです。

  1. クライアントが RPC 呼び出しを GWT サーバーに送信する
  2. サーバーは RPC 呼び出しを受け取り、Rails システムに対して同等の Ajax リクエストを行います
  3. サーバーは Ajax リクエストの結果から Java オブジェクトを生成し、それをクライアントに返します。

私が今直面している問題は、両方のシステムでユーザー セッション データを管理することです。Tomcat インスタンスは 1 つしかなく、それには独自のタイプのセッションがあり、Ruby システムは ActiveRecordStore を使用してセッション データをデータベースに保存します。

ここでの問題は、Tomcat システムが Ruby システムと対話するときに、GWT クライアントがログイン要求を行った場合、GWT システムから最後にログインしたユーザーは、すべての送信 Ajax 要求が Rails システムで実行されているかのように処理されることです。 Tomcat システムは Rails にとって単一のクライアントのように見えるため、re は現在のユーザーです。

とにかく、ユーザーが Tomcat システムとのセッションを開始した場合、Ruby システムがこれを認識し、Tomcat サーバーが単一のクライアントであっても Rails システムと同等のセッションを持つようにするにはどうすればよいでしょうか。は、その単一のクライアントから多くの異なるユーザーが通信していることを認識しています。

4

2 に答える 2

1

これを解決する最善の方法は、データベースの代わりに Cookie を使用してセッションを保存することだと思います。Rails はこれをネイティブにサポートしており、実際にはしばらくの間デフォルトの Cookie ストアになっています。Cookie 自体は、ユーザーの改ざんを防ぐためにサーバー シークレットによって署名されています。Railsの実装ではRubyマーシャリングを使用してデータをダンプ/ロードするため、Javaで実装する必要があるか、同じアイデアを使用して両側に独自のCookieマネージャーを実装できます。

Java アプリケーションで JRuby の Ruby コードをそのまま使用することもできます。

于 2010-02-24T20:05:33.787 に答える
0

RoR についてはわかりませんが、ほとんどの Web テクノロジでは、セッションは Cookie を使用して維持されます。Java サーバーから RoR インスタンスへの複数回の呼び出しで (特定のユーザーの) Cookie を保存する場合は、問題ありません。

于 2010-02-24T16:53:31.730 に答える