[Django]危険なものを使用してjsonデータを暗号化してトークンを生成する

フロントエンドに情報を送信する必要がある場合があり、フロントエンドがそれを送り返します。機密情報に遭遇すると、それが公開されるため、トークンに暗号化し、フロントエンドが送り返すときに復号化する必要があります。危険なモジュールを暗号化および復号化操作に使用できます

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'))

おすすめ

転載: blog.csdn.net/qq_39147299/article/details/108532467