Audit.net 使用全局操作过滤器忽略 Http Get 方法

问题描述

我正在使用 Audit.net 来审核所有 .net 核心 Web API 请求。我想使用全局操作过滤器来审核所有 HTTP 请求,但不想审核 HTTP GET 方法。在配置 AddAuditFilter 时,我可以使用 LogActionIf 过滤器有条件地记录操作,但无法设置条件来检查此操作是否与 Http Get 相关。知道如何添加条件过滤器吗?我指的是以下配置:

mvc.AddAuditFilter(config => config
                .LogActionIf(d => d.ControllerName == "Orders" && d.ActionName != "Getorder")
                .WithEventType("{verb}.{controller}.{action}")
                .IncludeHeaders(ctx => !ctx.ModelState.IsValid)
                .IncludeRequestBody()
                .IncludeModelState()
                .IncludeResponseBody(ctx => ctx.HttpContext.Response.StatusCode == 200));

解决方法

使用以 LogRequestIf 作为参数的 HttpRequest 怎么样:

mvc.AddAuditFilter(config => config
    .LogRequestIf(r => r.Method != "GET")  // <-- This
    .WithEventType("{verb}.{controller}.{action}")
    .IncludeHeaders(ctx => !ctx.ModelState.IsValid)
    .IncludeRequestBody()
    .IncludeModelState()
    .IncludeResponseBody(ctx => ctx.HttpContext.Response.StatusCode == 200));

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...