基於Redis實現的單點登入

2021-08-22 11:33:44 字數 1580 閱讀 7893

背景:

每個web應用都有自己的session,那如何在分布式或者集群環境下統一session,即如何實現單點登入,如下圖

解決方案:

把session資料存放在redis,統一管理,向外提供服務介面,redis可以設定過期時間,對應session的失效時間

優點:訪問速度快,效率高;無單點故障,可以部署集群;自定義登入頁面(即每個應用都可以設計自己的登入頁面)

缺點:必須部署redis;所有程式自行開發,例如:登入、登出等。

系統架構,只關注taotao-sso和redis快取即可,如下圖:

基於redis實現的單點登入這套方案比sso cas來說比較簡單,容易上手,主要是依賴每個應用的***和redis實現單點登入

sso需要提供的介面如下:

登入,根據使用者名稱和密碼查詢資料庫,如存在則生成token儲存在redis,token作為key,使用者資訊作為value,設定過期時間,然後把token儲存到cookie,固定key,token作為value;

根據token查詢使用者資訊,根據token作為key查詢redis的值,如存在重新設定過期時間(即已登入),不存在即未登入

登出,根據token作為key刪除redis的值

***流程圖如下:

*****如下:

public class orderinterceptor implements handlerinterceptor  else  else 

}//放行

}

主要的流程已描述了,是不是比較簡單;但這個方案還有一點瑕疵,就是跨域獲取不了cookie,這個也是有解決方案的,以後有時間再補充。

C 基於Redis快取實現單點登入SSO的例項

最近公司的多個業務系統要統一整合使用同乙個登入,這就是我們耳熟能詳的單點登入,現在就net基於redis快取實現單點登入做乙個簡單的分享。單點登入 single sign on 簡稱為 sso,是目前比較流行的企業業務整合的解決方案之一。sso的定義是在多個應用系統中,使用者只需要登入一次就可以訪問...

基於redis的單點登入解決方案

單點登入有兩種模型,一種是共同父域下的單點登入 例如網域名稱都是 xx.a.com 還有就是完全跨域下的單點登入 例如網域名稱是xx.a.com,xx.b.com 本文我們講一下完全跨域下的單點登入該怎麼實現。基於安全考慮,想通過cookie來實現這個功能是不太可能的了 也許有其他黑科技可以實現,這...

單點登入 基於code

前後端分離專案 const singlelogin async const gotoindex async code string 0 return 如果失敗去設定使用者錯誤資訊 setuserloginstate msg catch error setsubmitting false useeff...