⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

基于信号的脱敏审计日志系统

使用Django内置信号和自定义信号,自动记录数据变更但自动脱敏敏感字段。 · 难度:入门 · +10XP

信号驱动的智能审计日志

多数审计日志教程只记录CRUD操作,但本教程教你利用post_save、post_delete信号结合自定义信号,实现字段级脱敏记录。例如:当用户模型保存时,自动记录'email'字段为'***@***.com'格式,而'username'完整记录。同时通过自定义信号(如payment_completed)记录业务事件,而非仅仅数据变动。你将编写信号处理器和独立的AuditLog模型。

from django.db.models.signals import post_save
from django.dispatch import receiver
from .models import User, AuditLog

def mask_sensitive_value(field_name, value): if field_name == 'email': return value[:1] + '***@***' + value[-4:] return value

@receiver(post_save, sender=User) def log_user_save(sender, instance, **kwargs): changed_fields = [] for field in instance._meta.fields: old_val = getattr(instance, field.attname, None) new_val = mask_sensitive_value(field.name, old_val) changed_fields.append((field.name, new_val)) AuditLog.objects.create(model='User', action='save', details=changed_fields)

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 189 篇
0 完成
🔥 0