Spring Security 6.3 增加了被動的 JDK 序列化/反序列化,實現無縫升級

工程 | Marcus Hert Da Coregio | 2024 年 1 月 19 日 | ...

在 Spring Security 的早期版本中,我們特意決定不保證不同版本專案之間序列化類(透過 JDK 序列化)的相容性。這個決定主要考慮了 RMI 的背景,建議伺服器和客戶端都使用相同版本的 Spring Security。

隨著越來越多的應用程式依賴持久會話和 Spring Session 等技術,不一致的序列化問題變得越來越重要。持久會話意味著透過將使用者會話轉換為可以儲存並在以後的各種請求、伺服器甚至應用程式重新啟動時使用的格式來儲存使用者會話。在這種情況下,如果 JDK 序列化不是被動的,則在嘗試使用在舊版本或新版本的 Spring Security 中儲存的物件時可能會導致問題。

為任何可序列化的 Spring Security 類定義了一個共享的 serialVersionUID。 但是,每次小版本釋出都會更新此通用識別符號。 因此,例如,在 6.0 版本中序列化的物件無法在 6.1 版本中反序列化,反之亦然——即使物件的結構保持不變。 這意味著看似簡單的小版本升級可能會導致問題。

儘管 Spring Security 的策略通常是不在小版本之間引入任何重大更改,但 Java 序列化的情況並非如此。

從 Spring Security 6.3 開始,這種擔憂將成為過去。 類的序列化現在將進行相容性測試,以確保與前一個小版本相容。 這種增強功能向用戶保證,升級到較新版本不會無意中中斷序列化的物件,從而提供更強大、更無縫的體驗。

如果您遇到與序列化相容性相關的任何問題,請在專案的問題跟蹤器上報告。 我們期待收到您的反饋,並感謝您在使 Spring Security 更加可靠和使用者友好方面的合作。

有關更多詳細資訊,您可以參考以下連結

獲取 Spring 新聞通訊

透過 Spring 新聞通訊保持聯絡

訂閱

搶佔先機

VMware 提供培訓和認證,以加速您的進步。

瞭解更多

獲取支援

Tanzu Spring 在一個簡單的訂閱中提供對 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位制檔案。

瞭解更多

即將舉行的活動

檢視 Spring 社群中所有即將舉行的活動。

檢視全部