フロントエンドに情報を送信する必要がある場合があり、フロントエンドがそれを送り返します。機密情報に遭遇すると、それが公開されるため、トークンに暗号化し、フロントエンドが送り返すときに復号化する必要があります。危険なモジュールを暗号化および復号化操作に使用できます
1.危険なものをインストールします
pip install itsdangerous
2.使いやすい
実際、その危険性はさまざまな方法で使用できます。JSONの暗号化と復号化のメソッドのみを使用します。TimedJSONWebSignatureSerializerクラスのdumps()メソッドとloads()メソッドを使用する必要があります。
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
# 传入秘钥和有效期(秒)
serializer = Serializer('abcd',300)
token = serializer.dumps({
'mobole':'13978488888'}).decode()
print(token) # 结果:eyJpYXQiOjE1OTk4MDEzNjEsImFsZyI6IkhTNTEyIiwiZXhwIjoxNTk5...
# serializer = Serializer('1234',300) 假如传入的秘钥不正确就会报错
try:
data = serializer.loads(token)
print(data) # 结果:{'mobole': '13978488888'}
except Exception as e:
print('解密失败')
3.クラスにパッケージ化する
カプセル化の利点は、呼び出しが便利で、コードビジネスコードがより簡潔になることです。ここで簡単にカプセル化してみましょう。
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
from django.conf import settings
class SecretOauth(object):
def __init__(self):
# self.serializer = Serializer(secret_key='abcd',expires_in=300)
# 这里使用django配置文件里提供的秘钥
self.serializer = Serializer(secret_key=settings.SECRET_KEY,expires_in=300)
# 加密
def dumps(self,content_dict):
token = self.serializer.dumps(content_dict).decode()
return token
# 解密
def loads(self,token):
try:
content_dict = self.serializer.loads(token)
except Exception as e:
return None
return content_dict
if __name__ == '__main__':
res = SecretOauth().dumps(content_dict={
'mobile':'13978488888'})
print('加密后:', res)
res2 = SecretOauth().loads(res)
print('解密后:', res2)
print(res2.get('mobile'))