Skip to content

Commit

Permalink
Ignoring action parameters marked with [FromServicesAttribute] (#213)
Browse files Browse the repository at this point in the history
  • Loading branch information
thepirat000 committed Apr 17, 2019
1 parent e0a1441 commit 5143675
Show file tree
Hide file tree
Showing 32 changed files with 93 additions and 54 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Expand Up @@ -3,6 +3,10 @@ All notable changes to Audit.NET and its extensions will be documented in this f

The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).

## [14.2.3] - 2019-04-17
### Modified
- Audit.WebApi and Audit.WebApi.Core: Ignoring action parameters marked with `[FromServicesAttribute]` (#213).

## [14.2.2] - 2019-04-10
### Added
- Audit.NET.PostgreSql: Adding ability to configure extra columns on the audit SQL table with `CustomColumn` fluent API.
Expand Down
2 changes: 1 addition & 1 deletion src/Audit.DynamicProxy/Audit.DynamicProxy.csproj
Expand Up @@ -4,7 +4,7 @@
<Description>Generate Audit Logs by intercepting operation calls on any class without changing its code.</Description>
<Copyright>Copyright 2019</Copyright>
<AssemblyTitle>Audit.DynamicProxy</AssemblyTitle>
<VersionPrefix>14.2.2</VersionPrefix>
<VersionPrefix>14.2.3</VersionPrefix>
<Authors>Federico Colombo</Authors>
<TargetFrameworks>netstandard1.5;net45</TargetFrameworks>
<DefineConstants>$(DefineConstants);STRONG_NAME</DefineConstants>
Expand Down
Expand Up @@ -4,7 +4,7 @@
<Description>Generate Audit Logs from EntityFramework context changes</Description>
<Copyright>Copyright 2016</Copyright>
<AssemblyTitle>Audit.EntityFramework.Core</AssemblyTitle>
<VersionPrefix>14.2.2</VersionPrefix>
<VersionPrefix>14.2.3</VersionPrefix>
<Authors>Federico Colombo</Authors>
<TargetFrameworks>netstandard1.5;netstandard2.0;net461</TargetFrameworks>
<DefineConstants>$(DefineConstants);STRONG_NAME</DefineConstants>
Expand Down
Expand Up @@ -4,7 +4,7 @@
<Description>Generate Audit Logs from EntityFramework identity context changes</Description>
<Copyright>Copyright 2018</Copyright>
<AssemblyTitle>Audit.EntityFramework.Identity.Core</AssemblyTitle>
<VersionPrefix>14.2.2</VersionPrefix>
<VersionPrefix>14.2.3</VersionPrefix>
<Authors>Federico Colombo</Authors>
<TargetFrameworks>netstandard1.5;netstandard2.0;net461</TargetFrameworks>
<DefineConstants>$(DefineConstants);STRONG_NAME</DefineConstants>
Expand Down
Expand Up @@ -4,7 +4,7 @@
<Description>Generate Audit Logs from EntityFramework identity context changes</Description>
<Copyright>Copyright 2018</Copyright>
<AssemblyTitle>Audit.EntityFramework.Identity</AssemblyTitle>
<VersionPrefix>14.2.2</VersionPrefix>
<VersionPrefix>14.2.3</VersionPrefix>
<Authors>Federico Colombo</Authors>
<TargetFrameworks>netstandard1.5;netstandard2.0;net45</TargetFrameworks>
<DefineConstants>$(DefineConstants);STRONG_NAME</DefineConstants>
Expand Down
2 changes: 1 addition & 1 deletion src/Audit.EntityFramework/Audit.EntityFramework.csproj
Expand Up @@ -4,7 +4,7 @@
<Description>Generate Audit Logs from EntityFramework context changes</Description>
<Copyright>Copyright 2016</Copyright>
<AssemblyTitle>Audit.EntityFramework</AssemblyTitle>
<VersionPrefix>14.2.2</VersionPrefix>
<VersionPrefix>14.2.3</VersionPrefix>
<Authors>Federico Colombo</Authors>
<TargetFrameworks>netstandard1.5;netstandard2.0;net45</TargetFrameworks>
<DefineConstants>$(DefineConstants);STRONG_NAME</DefineConstants>
Expand Down
2 changes: 1 addition & 1 deletion src/Audit.FileSystem/Audit.FileSystem.csproj
Expand Up @@ -4,7 +4,7 @@
<Description>Generate Audit Logs from file system events using a FileSystemWatcher</Description>
<Copyright>Copyright 2018</Copyright>
<AssemblyTitle>Audit.FileSystem</AssemblyTitle>
<VersionPrefix>14.2.2</VersionPrefix>
<VersionPrefix>14.2.3</VersionPrefix>
<Authors>Federico Colombo</Authors>
<TargetFrameworks>netstandard1.3;net45</TargetFrameworks>
<DefineConstants>$(DefineConstants);STRONG_NAME</DefineConstants>
Expand Down
2 changes: 1 addition & 1 deletion src/Audit.Mvc.Core/Audit.Mvc.Core.csproj
Expand Up @@ -4,7 +4,7 @@
<Description>Generate detailed Audit Logs for AspNet Core MVC Controller actions.</Description>
<Copyright>Copyright 2016</Copyright>
<AssemblyTitle>Audit.Mvc.Core</AssemblyTitle>
<VersionPrefix>14.2.2</VersionPrefix>
<VersionPrefix>14.2.3</VersionPrefix>
<Authors>Federico Colombo</Authors>
<TargetFrameworks>netstandard1.6;netstandard2.0;net451</TargetFrameworks>
<DefineConstants>TRACE;DEBUG;STRONG_NAME</DefineConstants>
Expand Down
2 changes: 1 addition & 1 deletion src/Audit.Mvc/Audit.Mvc.csproj
Expand Up @@ -4,7 +4,7 @@
<Description>Generate detailed Audit Logs for MVC Controller actions.</Description>
<Copyright>Copyright 2016</Copyright>
<AssemblyTitle>Audit.Mvc</AssemblyTitle>
<VersionPrefix>14.2.2</VersionPrefix>
<VersionPrefix>14.2.3</VersionPrefix>
<Authors>Federico Colombo</Authors>
<TargetFrameworks>netstandard1.6;netstandard2.0;net45</TargetFrameworks>
<DefineConstants>TRACE;DEBUG;STRONG_NAME</DefineConstants>
Expand Down
Expand Up @@ -4,7 +4,7 @@
<Description>Store Audit.NET Trail Logs into an Azure Document DB database</Description>
<Copyright>Copyright 2016</Copyright>
<AssemblyTitle>Audit.AzureDocumentDB</AssemblyTitle>
<VersionPrefix>14.2.2</VersionPrefix>
<VersionPrefix>14.2.3</VersionPrefix>
<Authors>Federico Colombo</Authors>
<TargetFrameworks>net45;netstandard1.6;netstandard2.0</TargetFrameworks>
<DefineConstants>$(DefineConstants);STRONG_NAME</DefineConstants>
Expand Down
2 changes: 1 addition & 1 deletion src/Audit.NET.AzureStorage/Audit.NET.AzureStorage.csproj
Expand Up @@ -4,7 +4,7 @@
<Description>Store Audit.NET Logs into an Azure Blob Storage</Description>
<Copyright>Copyright 2019</Copyright>
<AssemblyTitle>Audit.AzureStorage</AssemblyTitle>
<VersionPrefix>14.2.2</VersionPrefix>
<VersionPrefix>14.2.3</VersionPrefix>
<Authors>Federico Colombo</Authors>
<TargetFrameworks>netstandard1.4;net452</TargetFrameworks>
<DefineConstants>$(DefineConstants);STRONG_NAME</DefineConstants>
Expand Down
2 changes: 1 addition & 1 deletion src/Audit.NET.DynamoDB/Audit.NET.DynamoDB.csproj
Expand Up @@ -4,7 +4,7 @@
<Description>Store Audit.NET Trail Logs into Amazon DynamoDB</Description>
<Copyright>Copyright 2018</Copyright>
<AssemblyTitle>Audit.DynamoDB</AssemblyTitle>
<VersionPrefix>14.2.2</VersionPrefix>
<VersionPrefix>14.2.3</VersionPrefix>
<Authors>Federico Colombo</Authors>
<TargetFrameworks>netstandard1.3;net45</TargetFrameworks>
<DefineConstants>$(DefineConstants);STRONG_NAME</DefineConstants>
Expand Down
2 changes: 1 addition & 1 deletion src/Audit.NET.ElasticSearch/Audit.NET.Elasticsearch.csproj
Expand Up @@ -4,7 +4,7 @@
<Description>Store Audit.NET Trail Logs into Elasticsearch database</Description>
<Copyright>Copyright 2018</Copyright>
<AssemblyTitle>Audit.Elasticsearch</AssemblyTitle>
<VersionPrefix>14.2.2</VersionPrefix>
<VersionPrefix>14.2.3</VersionPrefix>
<Authors>Federico Colombo</Authors>
<TargetFrameworks>net451;netstandard1.3</TargetFrameworks>
<DefineConstants>$(DefineConstants);STRONG_NAME</DefineConstants>
Expand Down
2 changes: 1 addition & 1 deletion src/Audit.NET.EventLog.Core/Audit.NET.EventLog.Core.csproj
Expand Up @@ -4,7 +4,7 @@
<Description>Log Audit.NET events to the Windows EventLog when targeting net standard 2.0</Description>
<Copyright>Copyright 2018</Copyright>
<AssemblyTitle>Audit.NET.EventLog.Core</AssemblyTitle>
<VersionPrefix>14.2.2</VersionPrefix>
<VersionPrefix>14.2.3</VersionPrefix>
<Authors>Federico Colombo</Authors>
<TargetFramework>netstandard2.0</TargetFramework>
<DefineConstants>$(DefineConstants);STRONG_NAME</DefineConstants>
Expand Down
2 changes: 1 addition & 1 deletion src/Audit.NET.MongoDB/Audit.NET.MongoDB.csproj
Expand Up @@ -4,7 +4,7 @@
<Description>Store Audit.NET Trail Logs into a MongoDB database</Description>
<Copyright>Copyright 2016</Copyright>
<AssemblyTitle>Audit.MongoDB</AssemblyTitle>
<VersionPrefix>14.2.2</VersionPrefix>
<VersionPrefix>14.2.3</VersionPrefix>
<Authors>Federico Colombo</Authors>
<TargetFrameworks>netstandard1.5;net45</TargetFrameworks>
<NoWarn>$(NoWarn);1591</NoWarn>
Expand Down
2 changes: 1 addition & 1 deletion src/Audit.NET.MySql/Audit.NET.MySql.csproj
Expand Up @@ -4,7 +4,7 @@
<Description>Store Audit.NET Trail Logs into a MySQL database</Description>
<Copyright>Copyright 2016</Copyright>
<AssemblyTitle>Audit.MySql</AssemblyTitle>
<VersionPrefix>14.2.2</VersionPrefix>
<VersionPrefix>14.2.3</VersionPrefix>
<Authors>Federico Colombo</Authors>
<TargetFrameworks>netstandard1.3;netstandard2.0;netcoreapp2.1;net45;net461</TargetFrameworks>
<DefineConstants>$(DefineConstants);STRONG_NAME</DefineConstants>
Expand Down
2 changes: 1 addition & 1 deletion src/Audit.NET.PostgreSql/Audit.NET.PostgreSql.csproj
Expand Up @@ -3,7 +3,7 @@
<Description>Store Audit.NET Trail Logs into a PostgreSQL database</Description>
<Copyright>Copyright 2017</Copyright>
<AssemblyTitle>Audit.PostgreSql</AssemblyTitle>
<VersionPrefix>14.2.2</VersionPrefix>
<VersionPrefix>14.2.3</VersionPrefix>
<Authors>Federico Colombo</Authors>
<TargetFrameworks>netstandard2.0;netstandard1.3;net45</TargetFrameworks>
<DefineConstants>$(DefineConstants);STRONG_NAME</DefineConstants>
Expand Down
2 changes: 1 addition & 1 deletion src/Audit.NET.Redis/Audit.NET.Redis.csproj
Expand Up @@ -4,7 +4,7 @@
<Description>Store Audit.NET Trail Logs in a Redis database as a strings, lists, hashes, sortedsets or pubsub</Description>
<Copyright>Copyright 2017</Copyright>
<AssemblyTitle>Audit.Redis</AssemblyTitle>
<VersionPrefix>14.2.2</VersionPrefix>
<VersionPrefix>14.2.3</VersionPrefix>
<Authors>Federico Colombo</Authors>
<TargetFrameworks>netstandard1.5;net45</TargetFrameworks>
<DefineConstants>$(DefineConstants);STRONG_NAME</DefineConstants>
Expand Down
2 changes: 1 addition & 1 deletion src/Audit.NET.SqlServer/Audit.NET.SqlServer.csproj
Expand Up @@ -4,7 +4,7 @@
<Description>Store Audit.NET Trail Logs into a SQL Server database</Description>
<Copyright>Copyright 2016</Copyright>
<AssemblyTitle>Audit.SqlServer</AssemblyTitle>
<VersionPrefix>14.2.2</VersionPrefix>
<VersionPrefix>14.2.3</VersionPrefix>
<Authors>Federico Colombo</Authors>
<TargetFrameworks>netstandard2.0;netstandard1.3;net45</TargetFrameworks>
<DefineConstants>$(DefineConstants);STRONG_NAME</DefineConstants>
Expand Down
2 changes: 1 addition & 1 deletion src/Audit.NET.Udp/Audit.NET.Udp.csproj
Expand Up @@ -4,7 +4,7 @@
<Description>Send Audit.NET Trail Logs as connectionless UDP datagrams to a remote host or a multicast group</Description>
<Copyright>Copyright 2017</Copyright>
<AssemblyTitle>Audit.Udp</AssemblyTitle>
<VersionPrefix>14.2.2</VersionPrefix>
<VersionPrefix>14.2.3</VersionPrefix>
<Authors>Federico Colombo</Authors>
<TargetFrameworks>netstandard1.3;net45</TargetFrameworks>
<DefineConstants>$(DefineConstants);STRONG_NAME</DefineConstants>
Expand Down
2 changes: 1 addition & 1 deletion src/Audit.NET.log4net/Audit.NET.log4net.csproj
Expand Up @@ -4,7 +4,7 @@
<Description>Log Audit.NET Audit Trail using Apache log4net™</Description>
<Copyright>Copyright 2017</Copyright>
<AssemblyTitle>Audit.log4net</AssemblyTitle>
<VersionPrefix>14.2.2</VersionPrefix>
<VersionPrefix>14.2.3</VersionPrefix>
<Authors>Federico Colombo</Authors>
<TargetFrameworks>netstandard1.3;net45</TargetFrameworks>
<DefineConstants>$(DefineConstants);STRONG_NAME</DefineConstants>
Expand Down
2 changes: 1 addition & 1 deletion src/Audit.NET/Audit.NET.csproj
Expand Up @@ -3,7 +3,7 @@
<Description>An extensible framework to audit executing operations in .NET and .NET Core.</Description>
<Copyright>Copyright 2016</Copyright>
<AssemblyTitle>Audit.NET</AssemblyTitle>
<VersionPrefix>14.2.2</VersionPrefix>
<VersionPrefix>14.2.3</VersionPrefix>
<Authors>Federico Colombo</Authors>
<TargetFrameworks>netstandard1.3;netstandard2.0;net45</TargetFrameworks>
<DefineConstants>$(DefineConstants);STRONG_NAME</DefineConstants>
Expand Down
2 changes: 1 addition & 1 deletion src/Audit.SignalR/Audit.SignalR.csproj
Expand Up @@ -3,7 +3,7 @@
<Description>Generate Audit Logs for ASP.NET SignalR invokations</Description>
<Copyright>Copyright 2016</Copyright>
<AssemblyTitle>Audit.SignalR</AssemblyTitle>
<VersionPrefix>14.2.2</VersionPrefix>
<VersionPrefix>14.2.3</VersionPrefix>
<Authors>Federico Colombo</Authors>
<TargetFramework>net45</TargetFramework>
<DefineConstants>$(DefineConstants);STRONG_NAME</DefineConstants>
Expand Down
2 changes: 1 addition & 1 deletion src/Audit.WCF/Audit.WCF.csproj
Expand Up @@ -4,7 +4,7 @@
<Description>Generate detailed Audit Logs for WCF service calls.</Description>
<Copyright>Copyright 2016</Copyright>
<AssemblyTitle>Audit.Wcf</AssemblyTitle>
<VersionPrefix>14.2.2</VersionPrefix>
<VersionPrefix>14.2.3</VersionPrefix>
<Authors>Federico Colombo</Authors>
<TargetFramework>net45</TargetFramework>
<DefineConstants>$(DefineConstants);STRONG_NAME</DefineConstants>
Expand Down
2 changes: 1 addition & 1 deletion src/Audit.WebApi.Core/Audit.WebApi.Core.csproj
Expand Up @@ -4,7 +4,7 @@
<Description>Generate detailed Audit Logs for AspNet Core Web API Controller calls.</Description>
<Copyright>Copyright 2016</Copyright>
<AssemblyTitle>Audit.WebApi.Core</AssemblyTitle>
<VersionPrefix>14.2.2</VersionPrefix>
<VersionPrefix>14.2.3</VersionPrefix>
<Authors>Federico Colombo</Authors>
<TargetFrameworks>netstandard1.6;netstandard2.0;net451</TargetFrameworks>
<DefineConstants>TRACE;DEBUG;STRONG_NAME</DefineConstants>
Expand Down
2 changes: 1 addition & 1 deletion src/Audit.WebApi/Audit.WebApi.csproj
Expand Up @@ -4,7 +4,7 @@
<Description>Generate detailed Audit Logs for Web API Controller calls.</Description>
<Copyright>Copyright 2016</Copyright>
<AssemblyTitle>Audit.WebApi</AssemblyTitle>
<VersionPrefix>14.2.2</VersionPrefix>
<VersionPrefix>14.2.3</VersionPrefix>
<Authors>Federico Colombo</Authors>
<TargetFrameworks>netstandard1.6;netstandard2.0;net45</TargetFrameworks>
<DefineConstants>TRACE;DEBUG;STRONG_NAME</DefineConstants>
Expand Down
7 changes: 6 additions & 1 deletion src/Audit.WebApi/AuditApiAdapter.Core.cs
Expand Up @@ -217,7 +217,12 @@ private object GetResponseBody(IActionResult result)
var args = actionArguments.ToDictionary(k => k.Key, v => v.Value);
foreach (var param in actionDescriptor.Parameters)
{
if ((param as ControllerParameterDescriptor)?.ParameterInfo.GetCustomAttribute<AuditIgnoreAttribute>(true) != null)
var paramDescriptor = param as ControllerParameterDescriptor;
if (paramDescriptor?.ParameterInfo.GetCustomAttribute<AuditIgnoreAttribute>(true) != null)
{
args.Remove(param.Name);
}
else if (paramDescriptor?.ParameterInfo.GetCustomAttribute<FromServicesAttribute>(true) != null)
{
args.Remove(param.Name);
}
Expand Down
@@ -0,0 +1,19 @@
using System.Collections.Generic;
using Audit.WebApi;
using Microsoft.AspNetCore.Mvc;

namespace Audit.Integration.AspNetCore.Controllers
{
[AuditApi(EventTypeName = "FromControllerAttribute", IncludeHeaders = true, IncludeResponseBody = true, IncludeRequestBody = true, IncludeModelState = true)]
[Route("api/[controller]")]
public class MoreValuesController : Controller
{
[HttpGet]
[AuditApi(EventTypeName = "FromActionAttribute", IncludeHeaders = true, IncludeResponseBody = true, IncludeRequestBody = true, IncludeModelState = true)]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2", "value3" };
}

}
}
7 changes: 7 additions & 0 deletions test/Audit.Integration.AspNetCore/Controllers/Request.cs
@@ -0,0 +1,7 @@
namespace Audit.Integration.AspNetCore.Controllers
{
public class Request
{
public string Value { get; set; }
}
}
24 changes: 6 additions & 18 deletions test/Audit.Integration.AspNetCore/Controllers/ValuesController.cs
Expand Up @@ -10,24 +10,6 @@

namespace Audit.Integration.AspNetCore.Controllers
{
[AuditApi(EventTypeName = "FromControllerAttribute", IncludeHeaders = true, IncludeResponseBody = true, IncludeRequestBody = true, IncludeModelState = true)]
[Route("api/[controller]")]
public class MoreValuesController : Controller
{
[HttpGet]
[AuditApi(EventTypeName = "FromActionAttribute", IncludeHeaders = true, IncludeResponseBody = true, IncludeRequestBody = true, IncludeModelState = true)]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2", "value3" };
}

}

public class Request
{
public string Value { get; set; }
}

[Route("api/[controller]")]
public class ValuesController : Controller
{
Expand All @@ -38,6 +20,12 @@ public IEnumerable<string> Get()
return new string[] { "value1", "value2" };
}

[HttpGet("TestFromServiceIgnore")]
[AuditApi(IncludeHeaders = true, IncludeResponseBody = true, IncludeRequestBody = true, IncludeModelState = true)]
public IActionResult TestFromServiceIgnore([FromServices] IServiceProvider provider, string t)
{
return Ok(t);
}

[HttpPost("FileUpload")]
[AuditApi(IncludeHeaders = true, IncludeResponseBody = true, IncludeRequestBody = true, IncludeModelState = true)]
Expand Down
14 changes: 4 additions & 10 deletions test/Audit.Integration.AspNetCore/Program.cs
Expand Up @@ -15,16 +15,6 @@ public class Program
{
static void Main(string[] args)
{

/*Audit.Core.Configuration.Setup()
.UseDynamicProvider(_ => _.OnInsertAndReplace(ev =>
{
var x = ev.GetWebApiAuditAction();
}));
BuildWebHost(args).RunAsync().GetAwaiter().GetResult();
return;*/

MainAsync(args).GetAwaiter().GetResult();
}

Expand All @@ -43,6 +33,10 @@ static async Task MainAsync(string[] args)
await webApiTests.TestInitialize();
Console.WriteLine("PASSED - TestInitialize");

Console.WriteLine("START - Test_WebApi_TestFromServiceIgnore");
await webApiTests.Test_WebApi_TestFromServiceIgnore();
Console.WriteLine("PASSED - Test_WebApi_TestFromServiceIgnore");

Console.WriteLine("START - Test_WebApi_ResponseHeaders_Attribute");
await webApiTests.Test_WebApi_ResponseHeaders_Attribute();
Console.WriteLine("PASSED - Test_WebApi_ResponseHeaders_Attribute");
Expand Down
22 changes: 22 additions & 0 deletions test/Audit.Integration.AspNetCore/WebApiTests.cs
Expand Up @@ -26,6 +26,28 @@ public async Task TestInitialize()
Assert.AreEqual("[\"value1\",\"value2\"]", s);
}

public async Task Test_WebApi_TestFromServiceIgnore()
{
var insertEvs = new List<AuditEvent>();
Audit.Core.Configuration.Setup()
.UseDynamicProvider(_ => _.OnInsertAndReplace(ev =>
{
insertEvs.Add(ev);
}))
.WithCreationPolicy(EventCreationPolicy.InsertOnEnd);

var url = $"http://localhost:{_port}/api/Values/TestFromServiceIgnore?t=test";
var client = new HttpClient();
var res = await client.GetAsync(url);

Assert.AreEqual(HttpStatusCode.OK, res.StatusCode);
Assert.AreEqual(1, insertEvs.Count);
var action = insertEvs[0].GetWebApiAuditAction();
Assert.AreEqual(1, action.ActionParameters.Count);
Assert.AreEqual("test", action.ActionParameters["t"]);
Assert.AreEqual("TestFromServiceIgnore", action.ActionName);
}

public async Task Test_WebApi_ResponseHeaders_Attribute()
{
var insertEvs = new List<AuditEvent>();
Expand Down

0 comments on commit 5143675

Please sign in to comment.