首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Audit.Net:添加自定义字段

Audit.Net:添加自定义字段
EN

Stack Overflow用户
提问于 2019-05-29 23:23:02
回答 1查看 224关注 0票数 1

我对audit.net的用法还不熟悉。我需要审核action方法中收到的参数中的一系列自定义值,如下所示。

代码语言:javascript
复制
[AuditField("User","reqLogin.User")]              
[AuditCustom(EventTypeName =  "AccesoAction")]  
public async Task<IActionResult> Acceso(LoginRequest reqLogin)
{            
     ...
}

我必须创建一个CustomField,其值为“FieldName”,值为参数reqLogin (reqLogin.User)的用户属性的值。

我正在扩展AuditAttribute类,以覆盖OnActionExecutionAsync方法并添加CustomField。

代码语言:javascript
复制
public class AuditCustomAttribute : AuditAttribute
{
  public override Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
  {
      lock (context.ActionDescriptor.Parameters)
      {
        foreach (AuditFieldAttribute apa in context.ActionDescriptor.Parameters.Cast<ControllerParameterDescriptor>().First().ParameterInfo.Member.GetCustomAttributes<AuditFieldAttribute>())
    {
           // create CustomField and add to context
    }
}   
 return base.OnActionExecutionAsync(context, next);
}
}

最后,在我的自定义AuditDataProvider类中,我将审计到达方法的customFields字段的事件:

代码语言:javascript
复制
  public override object InsertEvent(AuditEvent auditEvent)

这怎么可能呢?谢谢

EN

回答 1

Stack Overflow用户

发布于 2019-05-30 01:26:37

不太清楚您在问什么,但我猜您使用的是Audit.MVC扩展。

为什么需要使用ActionParameters上已有的信息创建CustomField

另外,我不认为你需要继承AuditAttribute的子类,因为已经有一个CustomAction机制可以使用了,例如:

代码语言:javascript
复制
Audit.Core.Configuration.AddOnCreatedAction(scope =>
{
    var action = scope.GetMvcAuditAction();
    var login = action.ActionParameters.FirstOrDefault(p => p.Key == "reqLogin").Value as LoginRequest;
    scope.SetCustomField("User", login.User);
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56363907

复制
相关文章

相似问题

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