You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中无法配置Auditlog中间件获取actor_id问题求助

Django Auditlog 无法自动记录 actor_id 问题

问题描述

根据文档要求,自动获取actor_id需在MIDDLEWARE中配置auditlog.middleware.AuditlogMiddleware,但完成配置后仍无法记录数据修改者信息,其余功能均正常运行。

当前配置代码:

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'auditlog.middleware.AuditlogMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'corsheaders.middleware.CorsMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

AUDITLOG_INCLUDE_ALL_MODELS = True

排查与解决方案

  • 调整中间件顺序:AuditlogMiddleware必须放在AuthenticationMiddleware之后。审计中间件依赖认证中间件获取当前登录用户,原配置中顺序错误导致无法读取用户信息。修改后的MIDDLEWARE配置:
    MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'corsheaders.middleware.CorsMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'auditlog.middleware.AuditlogMiddleware',  # 移至认证中间件之后
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
    ]
    
  • 确认用户登录状态:确保操作数据的用户处于已登录状态,匿名用户不会被记录为actor。
  • 验证模型配置:虽开启AUDITLOG_INCLUDE_ALL_MODELS = True,部分特殊模型可能需手动注册。可尝试为单个模型添加AuditlogMixin测试:
    from auditlog.models import AuditlogMixin
    
    class YourModel(AuditlogMixin, models.Model):
        # 模型字段定义
    
  • 处理后台任务场景:若通过Celery等后台任务修改数据,请求上下文不存在,需手动设置actor:
    from auditlog.context import set_actor
    
    def your_task(user_id):
        user = User.objects.get(id=user_id)
        with set_actor(user):
            # 执行数据修改操作
    

内容的提问来源于stack exchange,提问作者Зуфар Тангрибергенов

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 00:56:03