2014-05-12 39 views
0

我使用Spring Security的3.1.4和我有以下問題: 我實現我的自定義SavedRequestAwareAuthenticationSuccessHandler和我實現了一個緩存SessionRegistry。 問題是,我在SessionRegistry.registerNewSession中得到的會話ID不同,然後我得到SavedRequestAwareAuthenticationSuccessHandler .onAuthenticationSuccess春季安全改變的SessionID

會話registery首先被調用。 什麼是正確的?我怎樣才能得到同樣的兩個?

有沒有一種方法,自定義SessionRegistry.registerNewSession將採取春季安全會議ID?

回答

0

只是一個猜測。但這聽起來像是下面的問題。

在默認情況下,Spring安全性中啓用了一項稱爲會話固定保護的功能。 出於安全原因,它將會話遷移到新的ID。 想象一下,有人通過電子郵件爲您提供帶有現有會話ID的網址,您可以點擊鏈接並登錄。 現在,可以爲您提供網址的人可以使用提供的會話ID簡單地破解您的帳戶。

如果你想禁用它,你可以通過在你的spring安全配置中加入以下行來實現。但要注意風險。

<http .. > 
... 
<session-management session-fixation-protection="none"> 
... 
</http> 
+0

有沒有一種方式,自定義SessionRegistry.registerNewSession將採取春季安全會話ID? – lior

+0

除了我上面解釋的不是。但你想達到什麼目的?會話註冊表的工作是保持會話和成功處理程序在登錄後執行某些操作。爲什麼你需要相同的會話ID? – Nils