Browse Source

Disable logging for `HEAD` if `IsEnabledForGetRequests` is `false`.

pull/17543/head
maliming 3 years ago
parent
commit
cc0a2c8bb5
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 9
      framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Auditing/AbpAuditingMiddleware.cs
  2. 19
      framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Auditing/AuditTestController_Tests.cs
  3. 18
      framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Auditing/AuditTestPage_Tests.cs

9
framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Auditing/AbpAuditingMiddleware.cs

@ -98,13 +98,13 @@ public class AbpAuditingMiddleware : IMiddleware, ITransientDependency
{ {
return false; return false;
} }
if (!AuditingOptions.IsEnabledForIntegrationServices && if (!AuditingOptions.IsEnabledForIntegrationServices &&
context.Request.Path.Value.StartsWith($"/{AbpAspNetCoreConsts.DefaultIntegrationServiceApiPrefix}/")) context.Request.Path.Value.StartsWith($"/{AbpAspNetCoreConsts.DefaultIntegrationServiceApiPrefix}/"))
{ {
return true; return true;
} }
if (AspNetCoreAuditingOptions.IgnoredUrls.Any(x => context.Request.Path.Value.StartsWith(x))) if (AspNetCoreAuditingOptions.IgnoredUrls.Any(x => context.Request.Path.Value.StartsWith(x)))
{ {
return true; return true;
@ -134,7 +134,8 @@ public class AbpAuditingMiddleware : IMiddleware, ITransientDependency
} }
if (!AuditingOptions.IsEnabledForGetRequests && if (!AuditingOptions.IsEnabledForGetRequests &&
string.Equals(httpContext.Request.Method, HttpMethods.Get, StringComparison.OrdinalIgnoreCase)) (string.Equals(httpContext.Request.Method, HttpMethods.Get, StringComparison.OrdinalIgnoreCase) ||
string.Equals(httpContext.Request.Method, HttpMethods.Head, StringComparison.OrdinalIgnoreCase)))
{ {
return false; return false;
} }

19
framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Auditing/AuditTestController_Tests.cs

@ -1,5 +1,6 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net.Http;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
@ -41,6 +42,23 @@ public class AuditTestController_Tests : AspNetCoreMvcTestBase
x.Actions.Any(a => a.MethodName == nameof(AuditTestController.Get)))); x.Actions.Any(a => a.MethodName == nameof(AuditTestController.Get))));
} }
[Fact]
public async Task Should_Disable_AuditLog_For_Get_And_Head_Requests()
{
_options.IsEnabledForGetRequests = false;
await GetResponseAsync("api/audit-test/audit-success");
await _auditingStore.Received().DidNotReceive().SaveAsync(Arg.Any<AuditLogInfo>());
using (var requestMessage = new HttpRequestMessage(HttpMethod.Head, "api/audit-test/audit-success"))
{
var response = await Client.SendAsync(requestMessage);
response.StatusCode.ShouldBe(System.Net.HttpStatusCode.OK);
}
await _auditingStore.Received().DidNotReceive().SaveAsync(Arg.Any<AuditLogInfo>());
}
[Fact] [Fact]
public async Task Should_Trigger_Middleware_And_AuditLog_Success_For_GetRequests() public async Task Should_Trigger_Middleware_And_AuditLog_Success_For_GetRequests()
{ {
@ -50,7 +68,6 @@ public class AuditTestController_Tests : AspNetCoreMvcTestBase
await _auditingStore.Received().SaveAsync(Arg.Any<AuditLogInfo>()); await _auditingStore.Received().SaveAsync(Arg.Any<AuditLogInfo>());
} }
[Fact] [Fact]
public async Task Should_Trigger_Middleware_And_AuditLog_Success_For_Specified_Requests() public async Task Should_Trigger_Middleware_And_AuditLog_Success_For_Specified_Requests()
{ {

18
framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Auditing/AuditTestPage_Tests.cs

@ -1,11 +1,13 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net.Http;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using NSubstitute; using NSubstitute;
using Shouldly;
using Volo.Abp.Auditing; using Volo.Abp.Auditing;
using Xunit; using Xunit;
@ -40,6 +42,22 @@ public class AuditTestPage_Tests : AspNetCoreMvcTestBase
x.Actions.Any(a => a.MethodName == nameof(AuditTestPage.OnGet)))); x.Actions.Any(a => a.MethodName == nameof(AuditTestPage.OnGet))));
} }
[Fact]
public async Task Should_Disable_AuditLog_For_Get_And_Head_Requests()
{
_options.IsEnabledForGetRequests = false;
await GetResponseAsync("/Auditing/AuditTestPage");
await _auditingStore.Received().DidNotReceive().SaveAsync(Arg.Any<AuditLogInfo>());
using (var requestMessage = new HttpRequestMessage(HttpMethod.Head, "/Auditing/AuditTestPage"))
{
var response = await Client.SendAsync(requestMessage);
response.StatusCode.ShouldBe(System.Net.HttpStatusCode.OK);
}
await _auditingStore.Received().DidNotReceive().SaveAsync(Arg.Any<AuditLogInfo>());
}
[Fact] [Fact]
public async Task Should_Trigger_Middleware_And_AuditLog_Success_For_GetRequests() public async Task Should_Trigger_Middleware_And_AuditLog_Success_For_GetRequests()
{ {

Loading…
Cancel
Save