Java-前后端分離-單點登錄(SSO)
一、什么是單點登錄?
單點登錄的英文名叫做:Single Sign On(簡稱SSO),
以前的時候,一般我們就單系統,所有的功能都在同一個系統上,

后來,我們為了合理利用資源和降低耦合性,于是把單系統拆分成多個子系統,

比如阿里的淘寶和天貓,很明顯地我們可以知道這是兩個系統,但是你在使用的時候,登錄了天貓,淘寶也會自動登錄,,反過來也一樣

簡單來說,單點登錄就是在多個系統中,用戶只需一次登錄,各個系統即可感知該用戶已經登錄,
二、回顧單系統登錄
簡單講述一下怎么做單系統登錄的:
眾所周知,HTTP是無狀態的協議,這意味著服務器無法確認用戶的資訊,于是乎,W3C就提出了:給每一個用戶都發一個通行證,無論誰訪問的時候都需要攜帶通行證,這樣服務器就可以從通行證上確認用戶的資訊,通行證就是Cookie,
如果說Cookie是檢查用戶身上的”通行證“來確認用戶的身份,那么Session就是通過檢查服務器上的”客戶明細表“來確認用戶的身份的,Session相當于在服務器中建立了一份“客戶明細表”,
HTTP協議是無狀態的,Session不能依據HTTP連接來判斷是否為同一個用戶,于是乎:服務器向用戶瀏覽器發送了一個名為JESSIONID的Cookie,它的值是Session的id值,其實Session是依據Cookie來識別是否是同一個用戶,
所以,一般我們單系統實作登錄會這樣做:
登錄: 將用戶資訊保存在Session物件中,如果在Session物件中能查到,說明已經登錄如果在Session物件中查不到,說明沒登錄(或者已經退出了登錄)
關閉瀏覽器: 從Session中洗掉用戶的資訊(關閉掉瀏覽器后,重新打開瀏覽器還能保持登錄狀態):配合Cookie來用
退出登錄: 清除session,和本地cookie,跳轉到登錄頁
具體流程:
可以看我博客的 JavaWeb-免登錄UML時序圖-(全網最詳細) 這里面有最詳細的教程
三、2種單系統登錄UML時序圖
因為細節太多了,所以這里只畫出來流程的大概走向而具體的細節后面會說.
第一種單點登錄(和淘寶,天貓一樣) 都使用自己系統的登錄注冊頁面,但是認證服務都是用一個

第二種單點登錄,都使用SSO認證服務的登錄頁面,而注冊頁面因為每個系統賬戶注冊的資訊可能都不同那么可以利用重定向使用自己的注冊頁面(這個就需要自己設計了)

實戰案例
我們這里只實作第一種時序圖的單點登錄,第二種的話自己看圖寫代碼就行了比較簡單
前端工具: WebStorm 或者vs code …
后端工具: IntelliJ IDEA
前端需要的技術: vue , jquery , js , ajax , 加密演算法…
后端需要的技術 java, Springboot , cookie , session , redis 加密演算法…
專案前后端代碼和效果視頻:
鏈接:https://pan.baidu.com/s/1yxQ0bIcwKXYsdjc3qYtQzQ
提取碼:1234

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/344231.html
標籤:java
