【问题标题】:Audit.NET EntityFrameworkAudit.NET 实体框架
【发布时间】:2021-01-05 10:22:15
【问题描述】:

我正在尝试用 Audit.NET 替换我们自己的审计系统。我已经检查了 Audit.EntityFramework https://github.com/thepirat000/Audit.NET/tree/master/src/Audit.EntityFramework 的文档,但我不清楚应该在哪里添加配置设置。另外,假设我正在构建一个 ASP.NET CORE RestFUL API,并且需要通过从 JWT 中提取用户信息来跟踪用户所做的更改,我将如何使用 Audit.EntityFramework 进行设置?

在文档中有如下代码 sn-p 来配置订单审计和跟踪用户:

Audit.Core.Configuration.Setup()
.UseEntityFramework(ef => ef
    .AuditTypeExplicitMapper(m => m
        .Map<Order, Audit_Order>()
        .Map<OrderItem, Audit_OrderItem>()
        .AuditEntityAction<IAudit>((evt, entry, auditEntity) =>
        {
            auditEntity.AuditDate = DateTime.UtcNow;
            auditEntity.UserName = evt.Environment.UserName;
            auditEntity.AuditAction = entry.Action; // Insert, Update, Delete
        })
    )
);

但是,如果我将其添加到 Startup.cs 中,它将无助于跟踪每个用户在不同端点上的不同用户进行的每次调用中所做的事情。您是否有任何示例说明我如何使用 Audit.EntityFramework 来做到这一点?

谢谢

【问题讨论】:

    标签: audit.net


    【解决方案1】:

    你见过main Audit.NET documentation吗?

    是的,必须在进行任何审核之前执行设置,因此您的启动代码应该没问题。

    如果您需要向审计事件添加更多信息,您可以使用custom actions,它也应该在您的启动代码中设置。这并不意味着您必须在启动时设置值,但您必须提供一种在启动时获取值的方法。例如,如果您需要来自当前HttpContext 的东西,您可以从HttpContextAccessor 获得它。例如:

    public void Configure(IApplicationBuilder app, IHttpContextAccessor contextAccessor)
    {
        // ...
        Audit.Core.Configuration.AddCustomAction(ActionType.OnScopeCreated, scope =>
        {
            var httpContext = contextAccessor.HttpContext;
            // Add a new field
            scope.Event.CustomFields["CorrelationId"] = httpContext.TraceIdentifier;
            // reuse an existing field
            scope.Event.Environment.UserName = GetUserFromContext(httpContext);
        });
    }
    

    此外,Audit.NET 提供了两个库 Audit.WebApiAudit.MVC 来审计 Web API 和/或 MVC 调用。

    还有一个 dotnet new template 公开,您可以使用它来快速创建一个启用审计并使用实体框架的最小 WebAPI/MVC 项目。例如:

    dotnet new -i Audit.WebApi.Template
    dotnet new webapiaudit -E
    

    【讨论】:

    • 我没有看到主文档,但会检查一下。感谢您的信息!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-07
    • 2020-04-11
    • 1970-01-01
    • 2015-12-26
    • 2014-04-01
    • 2020-08-06
    相关资源
    最近更新 更多