sso單點登錄系統(解決session共享)


場景:假設一個用戶將自己的登錄信息提交到后台,如果session保存的信息分布在多台機器上,並且不共享,那么可能導致用戶的登錄信息出現短暫的丟失,為什么這樣講,因為用戶訪問服務器中間還要經過負載均衡服務器,負載均衡采用輪詢的方式轉發用戶的登錄請求。有可能訪問到的那台機器用戶恰好沒有往服務器提交信息,導致信息出現短暫性丟失。這時一般有兩種解決方案。

一.配置session集群(也就是tomcat服務器集群),讓多台服務器共享同一個session並且同步,那么用戶的登錄信息就不會丟失。但是隨着用戶數量的增加,集群的性能就會下降

建議在5台一下的場景使用。

二.搭建單點登錄系統,向外提供服務接口,將session數據存儲在redis中,redis中的key可以設置信息的過期時間,而且訪問速度快,效率高。模擬用戶登錄與查詢訂單的流程。

1.用戶向sso系統發起登錄請求 2.系統跳轉登錄界面 3action接收用戶的參數 4后台根據用戶名從數據庫中查密碼 5.如果密碼正確,生成一個token(令牌),並將用戶的信息保存到redis中,設置過期時間 6返回登錄成功的界面 ,將token寫入cookie 7用戶訪問訂單系統 ,請求查詢訂單 8從cookie中取token查詢,調用sso單點登錄系統的服務,根據token查詢用戶的信息 9 接收token,從redis中查詢token的值是否存在或者是否過期,如果有效,直接返回訂單信息。

sso單點登錄系統是解決企業業務整合的比較流行的方案之一,用戶可以一次登錄,可以訪問多個不停的業務系統而不需要重新登錄。而且可以通過redis解決分布式環境下session共享的難題。僅代表個人的一些見解,希望有需要的一起學習共同進步!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM