From 3c9d2534fafbe76a103be6d52eab5e41a5f5cf76 Mon Sep 17 00:00:00 2001 From: Bai Date: Tue, 2 Sep 2025 18:50:26 +0800 Subject: [PATCH] perf: aks encrypt --- ..._accesskey_secret_alter_temptoken_secret.py | 18 ++++++++++++++++++ apps/common/db/fields.py | 4 ---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/apps/authentication/migrations/0008_alter_accesskey_secret_alter_temptoken_secret.py b/apps/authentication/migrations/0008_alter_accesskey_secret_alter_temptoken_secret.py index 7adf3c2eb..91e94bbc0 100644 --- a/apps/authentication/migrations/0008_alter_accesskey_secret_alter_temptoken_secret.py +++ b/apps/authentication/migrations/0008_alter_accesskey_secret_alter_temptoken_secret.py @@ -4,6 +4,22 @@ import authentication.models.access_key import common.db.fields from django.db import migrations +old_access_key_secrets_mapper = {} + +def fetch_access_key_secrets(apps, schema_editor): + AccessKey = apps.get_model("authentication", "AccessKey") + + for id, secret in AccessKey.objects.all().values_list('id', 'secret'): + old_access_key_secrets_mapper[str(id)] = secret + + +def save_access_key_secrets(apps, schema_editor): + AccessKey = apps.get_model("authentication", "AccessKey") + aks = AccessKey.objects.filter(id__in=list(old_access_key_secrets_mapper.keys())) + for ak in aks: + old_value = old_access_key_secrets_mapper.get(str(ak.id)) + ak.secret = old_value + ak.save(update_fields=["secret"]) class Migration(migrations.Migration): @@ -12,6 +28,7 @@ class Migration(migrations.Migration): ] operations = [ + migrations.RunPython(fetch_access_key_secrets), migrations.AlterField( model_name="accesskey", name="secret", @@ -27,4 +44,5 @@ class Migration(migrations.Migration): verbose_name="Secret" ), ), + migrations.RunPython(save_access_key_secrets), ] diff --git a/apps/common/db/fields.py b/apps/common/db/fields.py index 2364b0c43..7bdb4645e 100644 --- a/apps/common/db/fields.py +++ b/apps/common/db/fields.py @@ -146,10 +146,6 @@ class EncryptMixin: encryptor = Encryptor(value) plain_value = encryptor.decrypt() - # 如果解密失败,并且可能不是加密数据,则使用原始值 - if not plain_value and not encryptor.is_encrypted_data(): - plain_value = value - # 可能和Json mix,所以要先解密,再json sp = super() if hasattr(sp, "from_db_value"):