網(wǎng)站程序在后端api接口中移動端通過訪問url來獲取參數(shù),就在這種獲取url參數(shù)的時候如果接口不進行加密驗證,那么很有可能會造成數(shù)據(jù)泄露,本文便是為解決django開發(fā)api接口驗證的問題。
首先需要安裝itsdangerous模塊 利用pip install itsdangerous 自動安裝
然后導入該包
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
import itsdangerous,time
然后程序中設置兩串加密字符串(key,salt隨意設置)和過期時間
secret_key = "" #key
salt_str = "" #salt
expires_in = 60 #過期時間
獲取token:
s = Serializer(secret_key=secret_key, expires_in=expires_in, salt=salt_str, )
token = s.dumps({
"uid": 1,
"type": 1,
"iat": time.time(),
}).decode("utf-8") #填寫后面想要token解析出的參數(shù)
解析token:
def parser_token(token):
s = Serializer(secret_key=secret_key,expires_in=expires_in,salt=salt_str)
try:
return {"msg":"解析成功","code":1,"data":s.loads(token)}
except itsdangerous.SignatureExpired:
return {"msg":"token已過期請重新登錄","code":-1}
except itsdangerous.BadSignature as e:
if e.payload:
try:
s = s.load_payload(e.payload)
print(s)
return {"msg": "secret_key 和 salt可能已經(jīng)泄露", "code": -1}
except:pass
return {"msg": "token被篡改", "code": -1}
except:
return {"msg": "解析失敗 未知原因!", "code": -1}
設計程序時可以在會員登錄的時候將token頒發(fā)出去,然后在后面所有接口的header中都添加上token字段,這樣便能達到token驗證的目的,保護數(shù)據(jù)安全。例: