233-235
這3節就是手寫xxl-sso,我就簡單把流程圖畫了一下
代碼如下:
Title: XXL-SSO流程
瀏覽器->客戶端A: 1.訪問:http://client2.com:8081/xxl/
Note left of 客戶端A: 2.經過XxlSsoWebFilter,判斷釋放有用戶登錄過
客戶端A->瀏覽器: 3.沒有登錄的話重定向到http://ssoserver.com:8080/xxl/login?redirect_url=http://client2.com:8081/xxl/
瀏覽器 -> 服務器端: 4.訪問登錄頁http://ssoserver.com:8080/xxl/login?redirect_url=http://client2.com:8081/xxl/
服務器端-> 服務器端: 5.判斷是否登錄過,關鍵是cookie和xxl_sso_sessionid
服務器端-> 瀏覽器: 6.瀏覽器顯示登錄頁
瀏覽器-> 瀏覽器: 7.輸入賬號密碼進行登錄
瀏覽器->服務器端: 8.提交登錄請求 http://ssoserver.com:8080/xxl-sso-server/doLogin?username=user&password=123456&redirect_url=http%3A%2F%2Fclient2.com%3A8081%2Fxxl%2F
Note left of 服務器端:9.處理登錄請求,登錄成功保存用戶狀態信息,同時把令牌返回出去,隨便保存到cookie中,告訴別的系統已經登錄過。
服務器端 ->瀏覽器:10.1登錄成功,重定向到http://client2.com:8081/xxl/?xxl_sso_sessionid=1000_c13b
服務器端 ->瀏覽器:10.2瀏覽器保存cookie,xxl_sso_sessionid=1000_c13b
Note right of 瀏覽器:11-0ssoserver.com這個域名帶着所有cookie
瀏覽器 -> 客戶端A:11瀏覽器進行跳轉http://client2.com:8081/xxl/?xxl_sso_sessionid=1000_c13b
客戶端A -> 客戶端A:回到步驟1
瀏覽器 -> 客戶端B:12.http://client2.com:8081/xxl/,當一個新的客戶端去請求時判斷邏輯都是一樣的。
注:3中的參數redirect_url,是為了登錄以后在跳回客戶端A
1.如果參數有xxl_sso_sessionid,查到用戶放在session中;
2.session里面有也是登錄的
注:就是想用markdown畫一個時序圖,請求的url太長了,被我刪減一點。