1.子系統之間session不能實現共享,cookie在不同網域名稱下時也不能共享的,為此我們需要乙個相同的頂級網域名稱(如:aaa.yanxiaohui.cn
,bbb.yanxiaohui.cn)
2.在使用者登入操作完成的時候(即單點登入成功後)我們向頂級網域名稱寫入cookie
3.在訪問這個頂級網域名稱下的其他系統的時候我們只驗證頂級網域名稱下有沒有指定的cookie存在,如果存在,校驗其有效性,通過則放行,由此實
現單點登入操作,不存在則或失效則跳轉至單點登入的登入頁。
當sso登入頁登入成功,生成token,放入tokenmap(自定義存放token的集合)中,並重定向至backurl,拼接引數sso_token_name
(自定義的請求引數),其value就是token。重定向後,被sso攔截(sso過濾請求的處理機制)
此時判斷子系統的session中是否有token
有:校驗token
校驗通過:放行請求
校驗不通過攔截:重定向至sso登入頁
無:判斷請求引數中是否有sso_token_name
無:重定向至sso登入頁
有:從tokenmap中獲取token的物件,並將其放入子系統請求的session中,再重定向至backurl,並去掉請求引數
sso_token_name
被sso攔截(sso過濾請求的處理機制)
判斷子系統的session中是否有token(此時cooike的網域名稱和path都應該相同)
有:進行token是否有效的校驗
校驗通過:放行請求
校驗不通過攔截:重定向至sso登入頁
無:判斷請求引數中是否有sso_token_name
無:從cookie中獲取token,重定向到backurl,sso攔截,重複1.2的操作
有:從tokenmap中獲取token的物件,並將其放入子系統請求的session中,再重定向至backurl,並去掉請求引數
sso_token_name
runtime實際應用
摘要 前面的兩篇博文已經告訴大家怎麼去檢視runtime底層實現,但是這些還不夠,還必須知道怎麼去用!下文將通過案例講解,runtime的實際應用!runtime例項 runtime 執行時機制 首先必須明白的 1.是什麼 1 runtime是一套比較底層的純c語言api,屬於1個c語言庫,包含了很...
Qt widget 實際應用
首先寫乙個目錄吧,方便自己理清思路。一 qt 最特別之處 訊號與槽機制 二 qt widget 三 qt qml 一 qt 最特別之處 訊號與槽機制 訊號是什麼 訊號簡單來說呢就是乙個不用實現的方法宣告。訊號定義時使用的關鍵字 signals 與public private protected使用方...
wait notify 實際應用
1.需求 有三個執行緒 第乙個執行緒輸出 第二個執行緒輸出 第三個執行緒輸出 現在要讓這三個執行緒每一次輸出都按照先 在 最後 的形式輸出 public class demo catch interruptedexception e system.out.println start new thre...