有無狀態登錄,相對應的就會有有狀態登錄.
什麼是有狀態登錄?
有狀態服務,即服務端需要記錄每次會話的客戶端信息,從而識別客戶端身份,根據用戶身份進行請求的處理,典型的設計如tomcat中的session.
例如:用戶登錄後,我們把登錄者的信息保存在服務端的session中,並且給用戶一個cookie值,來記錄對於的session,然後下次請求的時候,用戶攜帶cookie來,我們就能識別到session中的用戶的信息。
有什麼缺點呢?
1.服務端保存大量數據,增加服務端壓力。
2.服務端保存用戶信息,無法水平擴展。
3.客戶端依賴服務端,多次請求必須訪問同一臺服務器
什麼是無狀態登錄?
微服務集羣中的每個服務,對外提供的rest風格的接口,而rest風格的一個最重要的規範就是:服務的無狀態性。即:
服務端不保存任何客戶端請求者的信息。
客戶端的每次請求都必須具備自述信息,通過這些信息識別客戶端身份。
帶來的好處:
客戶端的請求不依賴服務端,每次請求不需要訪問同一臺服務器
減小服務端的存儲壓力
服務端的集羣和狀態對客戶端時透明的
服務端可以任意的遷移和伸縮
如何實現無狀態登錄.
無狀態登錄流程:
當客戶端第一次登錄的時候,服務端對用戶進行信息認證。(登錄)
認證通過,將用戶信息進行加密形成token,返回給客戶端,作爲登錄憑證。
以後每次的請求,客戶端都攜帶認證的token。
服務端對token進行解密,判斷是否有效。