首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何只对[已审计的]方法进行审计,而不使[DisabledAudited]无处不在?

如何只对[已审计的]方法进行审计,而不使[DisabledAudited]无处不在?
EN

Stack Overflow用户
提问于 2020-11-16 05:59:29
回答 1查看 105关注 0票数 0

我的审计日志正在失控,所以我决定只对所有请求进行审计,这些请求基本上不是Get请求。有什么简单的方法可以从配置中做到这一点吗?

这里的文档:https://aspnetboilerplate.com/Pages/Documents/Audit-Logging

说:

注意:除了标准的审计配置之外,MVC和ASP.NET核心模块还定义了用于启用/禁用操作审计日志记录的配置。

但我找不到更多关于这意味着什么的信息。

作为最后一种手段,我知道如果我在每个类中都添加了[DisableAuditing],然后在非Get端点上添加了[Audited],这是可行的,但这似乎有点混乱。

最佳独白:我只想有一种简单的方法来选择非GET请求并对它们进行审计。

第二种最佳解决方案:我只希望只对[Audited]方法进行审计。我不想在每堂课上写[DisabledAuditing]

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-16 19:03:24

您可以为此创建一个AuditStore,然后在服务YourAplicationNameCoreModule中替换原始的AuditStore。

下面是一个例子

代码语言:javascript
复制
public class YourAuditStore : AuditingStore
{

    public ILogger<AuditingStore> Logger { get; set; }

    private readonly IRepository<AuditLog, long> _auditLogRepository;
    private readonly ISettingManager _settingManager;

    public YourAuditStore(IRepository<AuditLog, long> auditLogRepository, ISettingManager settingManager) : base(auditLogRepository)
    {
        _auditLogRepository = auditLogRepository;
        _settingManager = settingManager;
    }

    public override async Task SaveAsync(AuditInfo auditInfo)
    {
        AuditLog auditLog = new AuditLog();

        bool logErrorsOnly = await _settingManager.GetSettingValueAsync<bool>(AppSettings.Logging.LogOnErrorsOnly);

        var exceptionMessage = auditInfo.Exception != null ? auditInfo.Exception.ToString() : null;

        if ((logErrorsOnly && exceptionMessage != null) || !logErrorsOnly)
        {

            auditLog = await _auditLogRepository.InsertAsync(AuditLog.CreateFromAuditInfo(auditInfo));
        }


    }

}

如您所见,您可以在SaveAsync方法中筛选您想要的任何内容,当它接收到AuditInfo时,您可以检查方法是否与Get不同,然后保存

将下一段代码添加到YourApplicationNameCoreModule on PreInitialize方法中

代码语言:javascript
复制
public override void PreInitialize()
{
   Configuration.ReplaceService<IAuditingStore, YourAuditStore>();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64853292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档