場景
當后台項目由部署在一台改為部署在多台以后,解決session共享問題最常用的辦法就是把session存儲在redis等緩存中。關於session和cookie概念這里就不再贅述了,在springboot-security環境下,把session存儲到redis中共享是非常非常簡單的,除了多了一些配置,幾乎不用改任何代碼。共享session達到的效果就是,用戶在一台服務器上面登錄成功后,訪問另外一台,用戶也是處於登錄狀態。下面創建兩個一樣的項目,來配置session共享。
增加依賴
把session存儲在redis中配置共享,需要添加兩個依賴,一是redis,二是spring session:
配置文件修改
在配置文件中,需要配置redis的數據源和session的一些屬性:
關於session的配置,可以根據ide的提示看一下:
可以看到session的存儲不僅可以在redis中,還可以在數據庫或者MongoDB中,不過目前redis是選擇最多的一種方式。
添加注解
最后在啟動類中添加一個注解 @EnableRedisHttpSession :
測試
先打開一個項目的登錄頁面,登錄成功,
然后再打開一個瀏覽器,直接訪問第二個項目的主頁,此時不用登錄直接可以訪問:
來看一下session在redis中的存儲:
這樣就實現了session共享!此時把其中一個退出,另一個也會自動退出,redis 中的session數據也會自動刪除。
代碼地址 : https://gitee.com/blueses/spring-boot-security 091 092