2017-10-15 116 views
0

我有一個運行在使用AWS Elastic Beanstalk部署到EC2實例的Tomcat 8容器上的Java 8 Web應用程序。然後,我將Route 53配置爲將myapp.com指向Elastic Beanstalk端點作爲別名,並且與www.myapp.com一樣。AWS - 如何在Java Web應用程序的子域和域之間共享會話?

問題是,當我用他們任何一個登錄時,會話不與另一個共享。例如,如果我使用myapp.com登錄,然後嘗試訪問www.myapp.com,則系統會要求我再次登錄。 這個問題是可以重複使用的,反之亦然。

我讀過this answer解釋這個問題,雖然我理解這個理論,但我不確定如何真正實現這個。我嘗試將www.myapp.com直接指向myapp.com作爲路由53上的別名。我還嘗試配置EB以使用Elastic Load Balancer並檢查粘性會話選項。

這是可以在AWS上配置的東西,還是我需要配置我的代碼來適應這種情況?一個例子會非常有幫助。該應用程序是一個帶有JSP的標準Enterprise Java Web應用程序,並使用Spring Security進行身份驗證。

回答

2

基本上你需要Tomcat服務器在每個響應的每個Set-Cookie標題上設置domain="myapp.com"

有很多方法可以做到這一點。但最簡單的方法是在您的應用程序中編輯/src/resources/application.properties文件並將server.session.cookie.domain設置爲myapp.com