2013-04-11 71 views
6

我有下一個用例:匿名用戶的Tomcat /春季會話管理

我們有webstore用戶可以選擇一些商品,然後購買它們。他可以在登錄應用程序之前將商品添加到購物車中。所有這些項目都必須存儲在他的會話中。當用戶點擊「付款」按鈕時,我們會問他的憑證/卡/等。

我的問題:當我登錄之前,添加項目到購物車都可以正常工作。但是,當我嘗試以匿名用戶的身份將商品添加到購物車時,商品無法存儲。以匿名用戶身份刷新每個頁面後,我總是收到不同的JSESSIONID。

我決定創建簡單的應用程序,說明我的問題。我認爲如果沒有我的消息來源,這是無法解決的。

這裏是我的應用程序:

https://github.com/AlexTestAccount/simple_test

這很簡單。它只包含一個控制器和會話bean,我試着保存一些東西。

對於運行它,你需要gradle這個,Tomcat和定義enviropment變量CATALINA_HOME, 比你可以使用:

gradle這個部署

附:對不起,我的英語

回答

1

啓用調試日誌org.springframework.security.web.authentication.session.SessionFixationProtectionStrategy

水平必須有,當你登錄日誌聲明:如果打印「不遷移屬性」,那麼你需要配置彈簧securitys

>Invalidating session with Id '<originalSessionId>' <and : without> migrating attributes 

SessionFixationProtectionStrategy.migrateSessionAttributestrue(但這應該是默認設置)

另一個問題可能是,當您從http切換到https時,tomcat會更改會話。 要驗證這是問題:首先切換到https(未登錄)和物品到您的購物車,然後檢查它們是否消失。但是,tomcat應該在從http切換到https時正常保存會話內容(但不能以其他方式)。

+0

我使用http協議,不要從http切換到https。 – Alex 2013-04-11 15:10:33

+0

您是否找到日誌聲明? – Ralph 2013-04-11 15:35:24

+0

當我刷新頁面時,SessionFixationProtectionStrategy不會被調用。 – Alex 2013-04-11 16:20:57

0

對不起,這是環境問題。 我只是爲我的本地主機清理了所有的cookies,現在全部工作。