1. 程式人生 > >筆記單機和分散式應用下的登入校驗,session共享,分散式快取應用

筆記單機和分散式應用下的登入校驗,session共享,分散式快取應用

1、單機tomcat應用登入校驗

session儲存在瀏覽器和應用伺服器會話之間

使用者登入成功,服務端會保證一個session,當然會給客戶端一個sessionId。

客戶端會把sessionid儲存在cookie中,每次請求都會攜帶這個sessionId。

2、分散式應用中session共享

真實的應用不可能是單節點部署,所以就有個多節點登入session共享的問題需要解決

1)tomcat支援session共享,但是有廣播風暴;使用者量大的時候,佔用資源就越嚴重,不推薦。

2)使用redis儲存token:

    服務端使用UUID生成隨機64位或者128位token,讓如redis,然後返回給客戶端並存儲在cookie中,使用者每次訪問都攜帶此token,服務端去redis中校驗是否有此使用者即可。

3、微服務下登入校驗解決方案JWT (json wen token)

1、JWT是一個開放標準,它定義了一種用於簡潔,自包含的用於通訊雙方之間以JSON物件的形式安全傳遞資訊的方法。

    JWT可以使用HMAC演算法或是RSA的公鑰祕鑰對進行簽名。

    簡單來說,就是通過一定規範來生成token,然後可以通過解密演算法逆向解密token,這樣就可以獲取使用者資訊。

    優點:

        1)生產的token可以包含基本資訊,比如ID,使用者暱稱、頭像等資訊,避免再次查庫

        2)儲存在客戶端,不佔用服務端的記憶體資源

    缺點:

        token是經過base64編碼,所以可以解碼,因此token加密前的物件不應該包含敏感資訊如使用者許可權、密碼等。

2、JWT格式組成 頭部、負載、簽名

header + payload + signature

頭部:主要是描述簽名演算法

負載:主要描述的是加密物件的資訊,如使用者的id等,也可以加些規範裡面的東西,如iss簽發者,exp 過期時間,sub面向的使用者

簽名:主要是把前面兩部分進行加密,防止別人拿到token進行base解密後篡改token

3、關於JWT客戶端儲存

可以儲存在cookie,localstorage和sessionStorage裡面