一:什麼是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獲取,...