文章目錄
- 寫在前面
- 引出問題
- 解決問題
- 前後端分離項目
寫在前面
之前畫了一個單點登入的邏輯圖,其中有很多細節沒有展現清楚。
終于把單點登入完整流程圖畫明白了!史上最完整的CAS單點登入完整圖解!
今天就來讨論一下,認證伺服器登入完成之後,如何與用戶端保持session過期時間的統一?
引出問題
我們從流程圖中可以看出,當使用者完成了首次登入認證之後,會在認證伺服器存放一份session,同樣也會在用戶端伺服器存放一份session,以後再通路APP,不會再經過認證伺服器來認證該使用者是否登入,而是直接在APP的背景來認證即可。
那麼問題來了,認證伺服器有一份session,用戶端伺服器也有一份session,這兩者如何同步?
假如說每次請求都同步一次的話,伺服器壓力也太大了,有沒有更好的辦法?
有!
解決問題
用戶端伺服器在認證的時候,存一份認證伺服器的session過期時間,因為使用者每次通路用戶端頁面,用戶端伺服器的session都會重新整理過期時間。
每次用戶端伺服器校驗session的時候,判斷認證伺服器的session是否過期,如果将要過期或者已經過期,就調用接口來重新整理認證伺服器的session過期時間,同時同步到用戶端伺服器中。
這樣,就可以保證兩者之間session過期時間的同步了,并且也沒有很頻繁的互動。
前後端分離項目
現在的項目大多數都是前後端分離項目了,可能cookie-session這一套已經不适用了,但是基本原理還是一樣的。