Django中使用jwt 超詳細

2021-10-12 03:10:49 字數 1957 閱讀 3865

一:什麼是jwt?

jwt被廣泛用於各類鑑權中,其中jwt token如下所示:

b'eyj0exaioijkv1qilcjhbgcioijiuzi1nij9.eyj1c2vybmftzsi6imfkaw1uin0.meqoddiii39mbpgbfnnbvndjmdhuprtxzipefjkb2fa'

jwt token

jwt生成的token是乙個用兩個點(.)分割的長字串

點分割成的三部分分別是header頭部,payload負載,signature簽名:header.payload.signature

jwt是不加密的,任何人都可以讀的到其中的資訊,其中

第一部分header和第二部分payload只是對原始輸入的資訊轉成了base64編碼,

print

(base64.b64decode(

'eyj0exaioijkv1qilcjhbgcioijiuzi1nij9'))

print

(base64.b64decode(

'eyj1c2vybmftzsi6imfkaw1uin0='))

#這裡最後加=的原因是base64解碼對傳入的引數長度不是2的物件,需要再引數最後加上乙個或兩個等號=

第三部分signature是用header+payload+secret_key進行加密的結果。應確保私鑰的保密性。保證signature不可偽造。

主要用在下文signature簽名中,服務端用來校驗token合法性,解密成功說明token正確,且資料沒有被篡改

二:django中使用jwt?

安裝:

pip install pyjwt
加密:

def

get_jwt_token

(user_name, role_data=

'default'):

""" 生成jwt-token

:param unit_name:

:param role_data:

:return:

"""payload =

} encoded_jwt = jwt.encode(payload, jwt_secret_key, algorithm=

'hs256'

)return

str(encoded_jwt, encoding=

'utf8'

)

解密:

def

decode_jwt_token

(encoded_jwt)

:# 關閉過期時間檢驗

de_code = jwt.decode(encoded_jwt, jwt_secret_key, algorithms=

['hs256'])

return de_code

前端獲取及儲存token

// 加密後的token傳給前端,進行儲存。

// 儲存

localstorage.setitem(

"lastname"

,"smith");

// 檢索

document.getelementbyid(

"result"

).innerhtml = localstorage.getitem(

"lastname");

//退出時

localstorge.clear(

)方法,token被清空

前端攜帶token,加入headers,如下:

"authori"

:"token"

django後端獲取token

在Mac(OS X)中使用GitHub的超詳細攻略

github是乙個面向開源及私有軟體專案的託管平台 開源 庫以及版本控制系統,因為只支援 git 作為唯一的版本庫格式進行託管,故名 github。通常在windows下使用github的教程是非常多的,因此也無需主頁君在此多費唇舌。本文主要討論在mac os x系統上使用github的方法。其實,...

DRF中使用JWT進行登入驗證

jwt原理 載荷就是存放有效資訊的地方,這個裡面可以配置一些引數已經我們需要進行加密的資料字典。一般情況下只需要存放我們的資料和設定乙個過期時間就可以了 根據當前時間設定一分鐘後過期 datetime.datetime.utcnow datetime.timedelta minutes 1 1.is...

在 GoLang 中使用 jwt 進行認證

jwt 即 json web token,是用 json 形式安全傳輸資訊的方法。對 jwt 解碼,可以得到以下內容 jwt 可以設定過期時間,它的應用主要有 一般服務端生成 jwt 並返回給客戶端時,要放在 cookie裡,並且加上httponly的標記,意味著這個 cookie不能被 js獲取,...