備忘錄篇JWT,R
JWT
傳統的 session 流程 瀏覽器發起請求登陸 服務端驗證身份,生成身份驗證資訊,儲存在服務端,並且告訴瀏覽器寫入 Cookie 瀏覽器發起請求獲取使用者資料,此時 Cookie 內容也跟隨這傳送到伺服器 伺服器發現 Cookie 中有身份資訊,驗明正身 伺服器返回該使用者的使用者資料 JWT 流程 瀏覽器發起請求登陸 服務端驗證身份,根據演算法,將使用者識別符號打包生成 token, 並且返回給瀏覽器 瀏覽器發起請求獲取使用者資料,把剛剛拿到的 token 一起傳送給伺服器 伺服器發現數據中有 token,驗明正身 伺服器返回該使用者的使用者資料 你發現了嗎?好些並沒有什麼區別,除了 session 需要服務端儲存一份,而 JWT 不需要
但實際上區別大了去了
session 儲存在服務端佔用伺服器資源,而 JWT 儲存在客戶端 session 儲存在 Cookie 中,存在偽造跨站請求偽造攻擊的風險 session 只存在一臺伺服器上,那麼下次請求就必須請求這臺伺服器,不利於分散式應用 儲存在客戶端的 JWT 比儲存在服務端的 session 更具有擴充套件性 …
Redis
1.與其他使用者狀態儲存方案比較 一般開發中使用者狀態使用session或者cookie,兩種方式各種利弊。
Session:在InProc模式下容易丟失,並且引起併發問題。如果使用SQLServer或者SQLServer模式又消耗了效能
Cookie則容易將一些使用者資訊暴露,加解密同樣也消耗了效能。
Redis採用這樣的方案解決了幾個問題,
1.Redis存取速度快。
2.使用者資料不容易丟失。
3.使用者多的情況下容易支援叢集。
4.能夠檢視線上使用者。
5.能夠實現使用者一處登入。(通過程式碼實現,後續介紹)
6.支援持久化。(當然可能沒什麼用)