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支援請...