1

2つのアプリケーションがあります。1 つは、サーブレット ベースの従来の Web アプリケーションです。もう 1 つは、Spring ベースの Web アプリケーションです。レガシ アプリには、複数の jquery タブを持つページがあります。タブの 1 つをスプリング ベースのアプリケーションの iframe として機能させたい。それを達成するために、次のことを行いました。

  1. タブ名をクリックすると、Spring アプリへの http 投稿要求をトリガーします (開いて http url 接続を開き、ライターへの印刷に書き込みます)。
  2. 要求には、両方のシステムで共有される生成されたキーを使用して暗号化された、レガシー システムのユーザーに関する情報が含まれています。
  3. URL への呼び出しをインターセプトするように spring mvc フレームワークを構成し、リクエストを処理するメソッドを呼び出します。

リクエスト処理では、理想的には次のことを行う必要があります。

  1. 共有鍵を使用してリクエスト データを復号化する
  2. リクエスト、ライセンスなどを検証する
  3. リクエスタが本物であると見なされ、ユーザーが有効なライセンスを持っている場合 (ライセンス検証に API を使用する場合)、ユーザーのアカウントを設定し、プログラムで春のセキュリティに認証します。
  4. ランダムな認証キーを生成します (共有キーの代わりに将来の通信に使用されます)
  5. ランダム キーをレガシー システムに送り返す (共有キーを使用して暗号化)
  6. ユーザーを春のアプリの特定のページに誘導する

123は完了していますが、 と に苦労し4てい5ます。レガシー システムに 2 番目のキーを送信し、レガシー システムに a を使用してそれを読み込ませbuffered reader、タブでリダイレクト ページを開くにはどうすればよいですか? 1回の応答でも可能ですか?

を使用し@ResponseBodyてキーを返しましたが、リダイレクトの送信方法がわかりませんか? ps何か不明な点があればお気軽に質問してください

4

1 に答える 1

1

次のように解決しました:

  1. レガシー アプリケーションのタブ ページは iframe でプリロードされますが、ソースはありません。それに加えて、非表示のフィールドを持つフォームが配置されますが、値はありません。フォームにはターゲットとして iframe があり、そのアクションはスプリング アプリの URL を指します。
  2. タブ ページが開かれると、レガシー アプリケーションのサーブレットに対して ajax 呼び出しが実行されます。
  3. サーブレットは、params を使用して `/spring-url.do` で spring アプリを呼び出します。呼び出しは、`HttpURLConnection` を開くことによって実行されます。
  4. `/spring-url.do` は spring ディスパッチャによってインターセプトされ、メソッドは次のように処理します。
  5. ユーザーが初めての場合は、新しいキーを生成し、それを応答に書き込みます (これは、戻り値の型が `@ResponseBody String` である別のコントローラーに要求を転送することによって行われます)
  6. 応答はレガシー アプリケーション サーブレットによって読み取られ、キーは将来の通信のためにレガシー アプリケーション データベースに保存されます。
  7. サーブレットは新しいキーを使用してユーザー データを暗号化し、それを ajax 呼び出しに返します。
  8. ajax 成功関数は応答を読み取り、非表示のフォーム フィールドの値を設定し、プログラムでフォームを送信します。
  9. spring は再び URL をインターセプトしますが、今回は既存のユーザーであるため、新しいキーを生成せず、代わりにデータを検証し、要求を spring アプリのページに転送します。

于 2012-11-27T21:50:54.877 に答える