Cokkie使用和JEW原理

2022-08-12 12:12:15 字數 1520 閱讀 3832

1,1 cookie原理:使用者名稱加密碼

cookie是儲存在使用者瀏覽器端,使用者名稱和密碼等明文資訊

1,2 cookeie使用原理

session是儲存在伺服器端的一段支付竄,相當於字典的key

1,使用者向伺服器傳送使用者名稱和密碼。

2,驗證伺服器後,相關資料(如同使用者角色,登陸時間)

3,伺服器向使用者返回session_id,session資訊都會寫入使用者的cookie

4,使用者的每個後續請求都將通過在cookie中取出session_id傳給伺服器

5,伺服器收到session_id並對比之前儲存的資料,確認使用者的身份

1,3 session使用缺點

1,這種模式最大的缺點的問題是,沒有分布式架構,無法支援橫向擴充套件。

2,如果使用乙個伺服器,該模式完全沒有問題。 但是如果使用多個伺服器就會出現問題

需要乙個統一的session資料庫儲存來實現資料共享

3,這樣負載均衡下的每個伺服器才可以正確驗證使用者身份

1,4 常用解決session的方法

1,一種解決方案是通過持久化session資料,寫入資料庫或檔案持久層等

2, 收到請求後,驗證服務從持久化請求資料

3,依賴於持久化得資料庫後者問題系統,會有單點風險,如果持久層失敗,整個認證體系都會掛掉

第一種:沒有session持久化

1,沒有分布式架構,無法支援橫向擴充套件

2,session預設儲存在記憶體中,如果把**部署在多台機器上,session儲存到了其中莫一台電腦

3,使用者如果在a機器上登入只有a機器的記憶體存了這個session的key,如果請求nginx路由到b機器

b機器記憶體中沒有這個session資料,就需要重新登陸

第二種: 寫入資料庫或檔案持久層

1,解決了橫向擴充套件問題

2,資料庫持久層出現問題,所有群集都沒辦法登入,單點故障

3,如果資料放到mysql中,使用者量過大,查詢量很慢,效率低

jet介紹

jet頭:jwt本質就是把使用者資訊通過加密後生成字串

jwt的原則是在伺服器身份驗證之後,將生成乙個json物件並將其傳送回使用者

之後,當使用者與伺服器通訊時,客戶在請求中發回json物件,伺服器僅依賴於這個json物件來標識使用者。 為了防止 使用者 篡改資料,伺服器將在生成物件時新增簽名(有關詳細資訊,請參閱下文)。   伺服器不儲存任何會話資料,即伺服器變為無狀態,使其更容易擴充套件

2,2jwt的資料結構

1,jwt頭,jwt頭部分是乙個描述的json物件

2,有效載荷:七個預設欄位+自定義私有字段

3, 簽名=hmacsha256( base64urlencode(header) + "." + base64urlencode(payload) ,secret)

SDWebImage原理和使用

使用場景 以下 在需要監聽網路狀態的方法中使用 afnetworkreachabilitymanager mgr afnetworkreachabilitymanager sharedmanager setitem customitem item setitem customitem item el...

TCP Fast Open原理和使用

tcp建立連線需要三次握手,這個大家都知道。但是三次握手會導致傳輸效率下降,尤其是http這種短連線的協議,雖然http有keep alive來讓一些請求頻繁的http提高效能,避免了一些三次握手的次數,但是還是希望能繞過三次握手提高效率,或者說在三次握手的同時就把資料傳輸的事情給做了,這就是我們這...

Hystrix原理和使用

構造乙個 hystrixcommand或hystrixobservablecommand物件,用於封裝請求,並在構造方法配置請求被執行需要的引數 執行命令,hystrix提供了4種執行命令的方法,後面詳述 判斷是否使用快取響應請求,若啟用了快取,且快取可用,直接使用快取響應請求。hystrix支援請...