單點登錄的理解:
單點登錄(SSO)是整合企業系統的解決方案之一,旨在多個應用系統中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統。
要實現單點登錄,就需要先了解域名之間的關系和格式,域名分為頂級域名(也稱主域名和一級域名)、二級域名、三級域名等。
頂級域名:cnblogs.com
二級域名:i.cnblogs.com
三級域名:aa.i.cnblogs.com
單點登錄流程(拿VUE項目做案例):
我們登錄成功后,后台會返回一個token給我們,我們需要把它存到Cookie里面,方便后面使用。然后請求接口的時候,會在接口帶一個token過去給服務器,做為驗證當前系統是否已經登錄,或者登錄過期的依據。
vue請求頁面接口的時候,做一個請求攔截,如果在Cookie里面有token,則直接請求數據,正常進入頁面;如果沒有token,說明項目沒有登錄,則控制路由跳轉去登錄頁面。
所以只要在不同級別的域名下,獲取保存在Cookie里面的token就可以了,只要在設置cookie的時候把domain設置為主域名,就可以在其他二級、三級域名下找到token,這就是主要流程了。
單點登錄的實現代碼:
/** * Cookies.set傳三個值,第一個是cookie的名稱,第二個是設置token,第三個是路勁和cookie的域名 */ Cookies.set( "name", // 設置cookie的名稱 "value", // 設置token { path: "/", // 這里不能把/去掉,否則會出現bug,可能導致找不到domain domain: "cnblogs" // 設置主域名(關鍵點) } )
退出登錄的時候,把設置的這個Cookie清除就可以了:
Cookies.set( "name", // 清除的cookie的名稱 null, { expires: -1, // 有效期設置負數,cookie會自動清空 path: "/", domain: "cnblogs" // 主域名 } )
OK,到這里單點登錄就完成了。
版權聲明:本文為博主原創文章,轉載需注明出處。https://www.cnblogs.com/silent007/p/15207581.html
*************************************** END ***************************************