2013-01-10 117 views
7

我有兩個Web應用程序。我將登錄到一個Web應用程序,並通過第一個應用程序的鏈接或重定向導航到另一個Web應用程序。最後,在完成應用程序二中的一些步驟後,我將被重定向到應用程序一。我怎樣才能實現這個?Java - 如何在兩個或多個Web應用程序之間共享會話?

這裏應用程序二是通用的,我將有三個Application One實例,它們將與應用程序二進行交互。

請建議更好的方法。我必須使用Spring和Spring Webflow來實現它。

+0

使用CAS https://en.wikipedia.org/wiki/Central_Authentication_Service那裏有根據語言幾種實現。對於春天,你在文檔中看到過這個嗎? http://docs.spring.io/spring-security/site/docs/current/reference/html/cas.html –

回答

4

技術上,之間的會話2的Web應用程序(兩個不同的WAR)不能共享。這是設計和完成的安全原因。我想使你的問題如下意見和建議,

  1. 會話所使用的一般存儲在服務器端的瀏覽器和Session對象上的cookie的會話ID一般跟蹤。
  2. 當你發送一個請求時,這個cookie被髮送到服務器端每次
  3. 一個cookie將被髮送到只有到它來自的服務器。
  4. 因此,www.mysite.com/app1設置的cookie只會發送到www.mysite.com/app1而不發送到www.mysite.com/app2。
  5. 對於您的情況,如果用戶會話在兩個應用程序之間有效,瀏覽器將需要從app1和app2設置兩個Cookie。
  6. 一種方法是,當您使用java腳本登錄到app1時,還會向app2發送登錄請求。當這兩個請求都成功返回時,您的瀏覽器將擁有兩個應用程序的會話(app1和app2)
  7. 現在,註銷將面臨自己的挑戰,當您從app1註銷時,還需要從app2註銷。從技術上講,這意味着,您需要清除這兩個應用程序中設置的Cookie。在java腳本的幫助下,你可以做到這一點。
+0

「因此,由www.mysite.com/app1設置的cookie將僅發送至www.mysite.com/app1而不發送至www.mysite.com/app2」錯誤! – user544262772

+0

從規格(http://tools.ietf.org/html/rfc2109):路徑屬性指定此Cookie應用於的URL的子集。 – Santosh

+0

也參考這篇文章:http://stackoverflow.com/questions/1967963/how-to-access-cookie-values-on-different-paths-of-the-same-domain-using-php – Santosh

5

當你撥打電話從APP1到APP 2,通過通過請求對象的所有必要信息(作爲請求參數),那麼APP 2可以讀出,且創建會話(可能是一個Servlet /過濾器可用於本)。

您可以在使用羣集的計算機上跨同一應用程序(app1和app1)共享會話。

+0

感謝您的回覆Anantha。我可以有兩個單獨的會議。無需一次會話。請提出一些想法來實現這一點。我不知道如何實現它。它就像一個流。我正在App1中做一些功能。之後,我要去App2,並做一些其他功能,這是App1的延續,然後返回到App1並完成流程。 – shankarmbtech

+0

就像去付款過程的第二個應用程序,並返回到App1 – shankarmbtech

+0

你說的是一個典型的支付過程(正如你所提到的),這裏的過程將作爲請求的一部分傳遞所有必要的信息(通常是HTTP POST)將在app2中創建會話(處理付款和退貨)... –

相關問題