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

如何在AspNetBoilerplate中仅审计指定的方法或类?

解决方案:在AspNetBoilerplate中仅审计特定方法/类

AspNetBoilerplate默认全局开启审计,通过[DisableAuditing]排除不需要审计的内容。要实现仅审计指定方法/类,可按以下步骤操作:

1. 全局禁用审计

先在模块类中全局关闭审计功能:

public class YourModule : AbpModule
{
    public override void PreInitialize()
    {
        Configuration.Auditing.IsEnabled = false; // 全局禁用审计
    }

    // ...其他模块方法
}

2. 创建自定义[EnableAuditing]特性

官方未提供启用审计的特性,自行定义:

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class EnableAuditingAttribute : Attribute
{
}

3. 重写审计判断逻辑

重写AuditingHelper的ShouldSaveAudit方法,让它检查目标是否带有[EnableAuditing]特性,符合条件则生成审计日志:

public class CustomAuditingHelper : AuditingHelper
{
    public CustomAuditingHelper(IIocResolver iocResolver, IAuditingConfiguration configuration) 
        : base(iocResolver, configuration)
    {
    }

    protected override bool ShouldSaveAudit(AuditInfo auditInfo, MethodInfo methodInfo, bool defaultValue)
    {
        // 检查方法或所属类是否带有EnableAuditing特性
        var hasEnableAuditingAttr = methodInfo.IsDefined(typeof(EnableAuditingAttribute), true) ||
                                   methodInfo.DeclaringType.IsDefined(typeof(EnableAuditingAttribute), true);

        return hasEnableAuditingAttr;
    }
}

4. 替换默认AuditingHelper

在模块的Initialize方法中,将自定义实现注册到DI容器,替换默认的AuditingHelper:

public override void Initialize()
{
    IocManager.Register<IAuditingHelper, CustomAuditingHelper>(DependencyLifeStyle.Transient);
    
    // ...其他初始化代码
}

5. 标记需要审计的方法/类

在需要审计的类或方法上添加[EnableAuditing]特性即可:

// 审计整个类的所有方法
[EnableAuditing]
public class OrderAppService : ApplicationService
{
    public void CreateOrder(CreateOrderInput input)
    {
        // 业务逻辑
    }
}

// 仅审计单个方法
public class UserAppService : ApplicationService
{
    [EnableAuditing]
    public void ChangePassword(ChangePasswordInput input)
    {
        // 业务逻辑
    }

    public void UpdateProfile(UpdateProfileInput input)
    {
        // 此方法不会被审计
    }
}

以上配置配合你已实现的MyCustomAuditStore,就能完成仅审计指定内容的需求。

内容的提问来源于stack exchange,提问作者Behzad Shirani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 19:48:12