http 是一種無狀態的協議算法
這裏無狀態怎麼理解: 先後兩次請求它不知道這是同一我的 仍是不一樣的人請求的數據庫
傳統的認證模式:採用session 和cookie結合的方式django
先後端分離的傳統:用戶信息生成token,token和對應的ID 保存到數據庫中。咱們django rest framwork 的 token auth 就是採用的這種json
接着把token傳給用戶,存入瀏覽器cookie,以後的請求帶上這個cookie,後端會根據這個cookie 值查詢用戶,驗證過時的邏輯表裏面多了一個字段,之後後端的驗證後端
問題:xss 漏洞瀏覽器
cookie 能夠被js 讀取,做爲後端識別用戶的標識,cookie 的泄露意味着信息的不安全,特別是咱們django rest framwork 的token auth 是沒有過時時間的安全
若是將驗證信息保存數據庫。每次都要查詢。保存session,加大了服務器端存儲壓力。服務器
。。。。。cookie
jwt 是一種開放標準,它定義了一種用戶簡潔,自包含的用戶通訊雙方之間的以json 對象那的形式安全傳遞信息的方法,session
。。。。。。
只要咱們生成的token遵循必定的規律,好比使用對稱加密算法來加密id 造成token。服務端只須要解密token 就能知道id。