前端角度的理解,可分為兩大塊內(nèi)容
1、統(tǒng)一登錄的業(yè)務(wù)模塊 (將登錄業(yè)務(wù)模塊獨(dú)立出來)
痛點(diǎn):主要是前端開發(fā)人員維護(hù)痛苦,每個(gè)項(xiàng)目都單獨(dú)寫登錄界面,代碼不統(tǒng)一,維護(hù)起來麻煩(后臺服務(wù)統(tǒng)一,前端未統(tǒng)一)。未能提升開發(fā)效率。
方案:
a、統(tǒng)一登錄業(yè)務(wù)SDK(npm包集成)
優(yōu)點(diǎn):方便快捷集成
缺點(diǎn):技術(shù)棧需要相同
b、統(tǒng)一登錄獨(dú)立系統(tǒng) (跳轉(zhuǎn)登錄系統(tǒng))
優(yōu)點(diǎn):統(tǒng)一維護(hù),不受項(xiàng)目技術(shù)棧限制,應(yīng)用場景廣
缺點(diǎn):系統(tǒng)訪問路徑url需要中轉(zhuǎn)登錄服務(wù)
2、統(tǒng)一登錄SSO服務(wù)(單點(diǎn)登錄)
痛點(diǎn):多平臺登錄會(huì)相互影響,切換平臺需要重新登錄,影響用戶體驗(yàn)。
是目前需要解決的問題
解決方案:token的共享
1、同源cookies 共享 --- 解決目前問題最簡單選擇
// 設(shè)置token在根域名下
if(window.location.host.includes('.ff.com.cn')){
return Cookies.set(TokenKey, token, { expires: 30, path: '/', domain: '.ff.com.cn' })
}
問題1:測試環(huán)境和正式環(huán)境需要設(shè)置不同的tokenKey
問題2:ff.com.cn 這樣子域名在相同環(huán)境下的token是否都通用,通用的話需要把相關(guān)系統(tǒng)的tokenKey設(shè)置成一樣。如不通用,那tokenKey須不一樣。
問題3:后續(xù)系統(tǒng)會(huì)不會(huì)有其他域名的情況?
缺點(diǎn):只能在同域下處理,儲存的tokenKey須管理好
優(yōu)點(diǎn):項(xiàng)目改造簡單,成本低
2、跨域需要登錄系統(tǒng)分發(fā)token --- 需要獨(dú)立部署登錄系統(tǒng)
流程圖:

說明token分發(fā)有兩種方式:
1、URL傳值
2、postMessage跨源通信
缺點(diǎn):前期項(xiàng)目改造麻煩點(diǎn),成本高
優(yōu)點(diǎn):擴(kuò)展性高,不受域名限制