Django之DRF框架(五)JWT认证_Simple子夜的博客-CSDN博客_django jwt认证
上面是原文自己整理一下代码:
import base64
import json
import hashlib
SECRET_KEY = "django-ceshi"
head = {'a': 'b'}
payload = {
"sub": "1234567890",
"name": "Tom",
"admin": True
}
class JwtToken:
def __init__(self, _secret):
self.secret_key = _secret
@staticmethod
def b64_encode(_jsn):
if isinstance(_jsn, dict):
_jsn = json.dumps(_jsn)
return base64.b64encode(_jsn.encode('utf-8'))
@staticmethod
def create_token(b64_head, b64_payload, md5_signature):
return f'{b64_head.decode("utf-8")}.{b64_payload.decode("utf-8")}.{md5_signature}'
def create(self, _head, _payload):
head_base64 = self.b64_encode(_head)
payload_base64 = self.b64_encode(_payload)
secret_base64 = self.b64_encode(self.secret_key)
md5 = hashlib.md5()
md5.update(head_base64)
md5.update(payload_base64)
md5.update(secret_base64) # secret
signature = md5.hexdigest()
return self.create_token(head_base64, payload_base64, signature)
print(JwtToken(SECRET_KEY).create(head, payload))