django使用JWT儲存使用者登入資訊

2021-10-13 12:15:25 字數 1985 閱讀 1554

更多程式設計教程請到:菜鳥教程

高州陽光論壇

人人影視

在使用前必須弄明白jwt的相關知識,可以看我的另一篇博文:

什麼是jwt?

json web token (jwt), 是為了在網路應用環境間傳遞宣告而執行的一種基於json的開放標準((rfc 7519).該token被設計為緊湊且安全的,特別適用於分布式站點的單點登入(sso)場景。jwt的宣告一般被用來在身份提供者和服務提供者間傳遞被認證的使用者身份資訊,以便於從資源伺服器獲取資源,也可以增加一些額外的其它業務邏輯所必須的宣告資訊,該token也可直接被用於認證,也可被加密。

jwt最普遍的乙個作用就是用來儲存使用者的登入資訊。

jwt的流程

1.簽發jwt

在使用者正確輸入賬號密碼成功登入後,服務端就會簽發jwt。

django使用第三方庫djangorestframework-jwt生成jwt,所以先安裝第三方包。

pip install djangorestframework-jwt

然後需要在django的配置上增加:

rest_framework =
jwt_auth =

然後就可以簽發jwt了。

from rest_framework_jwt.settings import api_settings
jwt_payload_handler = api_settings.jwt_payload_handler # 生payload部分的方法

jwt_encode_handler = api_settings.jwt_encode_handler # 生成jwt的方法

payload = jwt_payload_handler(user) # 生成payload, 得到字典

token = jwt_encode_handler(payload) # 生成jwt字串

生成之後,通過json字串的方式返回給前端。

2.前端儲存jwt

前端有兩種方式儲存資料,分別是localstorage 和 sessionstorage。

html5提供了兩種在客戶端儲存資料的新方法:

- localstorage - 永久資料儲存; 不同頁面資料共享

- sessionstorage - 臨時儲存,關閉頁面或瀏覽器後會被清除; (讀取sessionstorage的資料時,僅當前頁面(視窗)有效,但是jwt toekn會儲存直到瀏覽器關閉)

sessionstorage.key = val // 儲存資料

sessionstorage.key // 讀取資料

sessionstorage.clear() // 清除所有sessionstorage儲存的資料

sessionstorage.removeitem('key');

localstorage.key = val // 儲存資料

localstorage.key // 讀取資料

localstorage.clear() // 清除所有localstorage儲存的資料

localstorage.removeitem('key');

3.前端傳送jwt

前端會通過請求頭把jwt帶上,傳給服務端。

var config = ,

}; axios.get('', config)

.then(response => {})

.catch(error => {});

4.校驗jwt在前端有jwt後,再次登入服務端,服務端就會對這串jwt進行校驗,如果有修改就不會通過,如果過期了也不會通過。

Django中使用jwt 超詳細

一 什麼是jwt?jwt被廣泛用於各類鑑權中,其中jwt token如下所示 b eyj0exaioijkv1qilcjhbgcioijiuzi1nij9.eyj1c2vybmftzsi6imfkaw1uin0.meqoddiii39mbpgbfnnbvndjmdhuprtxzipefjkb2fa ...

jwt使用者登入

jwt就是一段字串,由三段資訊構成,第一部分是頭部 header,宣告token型別,宣告簽證的加密演算法 第二部分是載荷 payload,類似於飛機上承載的物品,存放標準宣告 公共宣告 私有宣告 第三部分是簽證 signature,辨真偽 防篡改 pip install djangorestfra...

JWT在Django中的應用

json web token jwt 是為了在網路應用環境間傳遞宣告而執行的一種基於json的開放標準 rfc 7519 該token被設計為緊湊且安全的,特別適用於分布式站點的單點登入 sso 場景。jwt的宣告一般被用來在身份提供者和服務提供者間傳遞被認證的使用者身份資訊,以便於從資源伺服器獲取...