首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Audit.NET EntityFramework

Audit.NET EntityFramework
EN

Stack Overflow用户
提问于 2020-09-18 21:10:06
回答 1查看 289关注 0票数 1

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

文档中有以下代码片段,用于配置订单和跟踪用户的审核:

代码语言:javascript
复制
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来做这件事的例子?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2020-09-20 11:20:35

你看过main Audit.NET documentation吗?

是的,设置必须在任何审计发生之前执行,所以在启动代码上应该没问题。

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

代码语言:javascript
复制
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项目。例如:

代码语言:javascript
复制
dotnet new -i Audit.WebApi.Template
dotnet new webapiaudit -E
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63956417

复制
相关文章

相似问题

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