10

2つのWebアプリケーションがあります。1つのWebアプリケーションにログインし、最初のアプリケーションからのリンクまたはリダイレクトによって別のWebアプリケーションに移動します。最後に、アプリケーション2のいくつかの手順を完了した後、アプリケーション1にリダイレクトされます。どうすればこれを実装できますか?

ここで、アプリケーション2は汎用であり、アプリケーション2と対話するアプリケーション1のインスタンスが3つあります。

より良いアプローチを提案してください。それを実装するには、SpringとSpringWebflowを使用する必要があります。

4

2 に答える 2

11

技術的には、2つのWebアプリケーション(2つの異なるWAR)間のセッションを共有することはできません。これは仕様によるものであり、セキュリティ上の理由から行われます。私はあなたの問題について以下のコメントと提案をしたいと思います、

  1. セッションは通常、ブラウザにCookieとして、サーバー側にSessionオブジェクトとして保存される セッションIDを使用して追跡されます。
  2. このCookieは、リクエストを送信するたびにサーバー側に送信されます。
  3. Cookieは、元のサーバーにのみ送信されます。
  4. したがって、www.mysite.com / app1によって設定されたCookieは、www.mysite.com / app1にのみ送信され、www.mysite.com/app2には送信されません。
  5. この場合、ユーザーセッションを2つのアプリケーションで有効にするには、ブラウザでapp1とapp2から2つのCookieを設定する必要があります。
  6. 1つの方法は、javaスクリプトを使用してapp1にログインするときに、app2にもログイン要求を送信することです。これらの両方のリクエストが正常に返されると、ブラウザは両方のアプリケーション(app1とapp2)のセッションを持ちます
  7. これで、ログアウトには独自の課題があります。app1からログアウトするときは、app2からもログアウトする必要があります。技術的には、これは、これらのアプリケーションの両方から設定されたCookieをクリアする必要があることを意味します。Javaスクリプトの助けをほとんど借りずに、これを行うことができます。
于 2013-01-10T14:59:36.633 に答える
6

app1からapp2を呼び出す必要がある場合は、必要なすべての情報をリクエストオブジェクトを介して(リクエストパラメータとして)渡すと、app2はそこでセッションを読み取って作成できます(おそらくサーブレット/フィルタを使用できます)。

クラスタリングを使用して、マシン間で同じアプリケーション(app1とapp1)間でセッションを共有できます。

于 2013-01-10T10:53:23.987 に答える