. NET Журнал основного аудита - PullRequest
1 голос
/ 17 января 2020

Я хочу реализовать ведение журнала аудита в моем. NET Базовом приложении. Что-то вроде

[HttpPost, Auditing]
public dynamic SomeApiAction()

Атрибут должен иметь возможность перехватывать вызов API до и после выполнения для регистрации.

Существует ли такой механизм в ядре. net как часть рамок? Я не хочу использовать какой-либо сторонний компонент. Пожалуйста, сообщите.

Ответы [ 2 ]

0 голосов
/ 22 января 2020

Вы можете попробовать Audit.WebApi библиотека, которая является частью Audit. NET framework. Он предоставляет настраиваемую инфраструктуру для регистрации взаимодействий с вашим Asp. NET Core Web API.

Например, с использованием атрибутов:

using Audit.WebApi;

public class UsersController : ApiController
{
    [HttpPost]
    [AuditApi(IncludeHeaders = true)]
    public IHttpActionResult Post()
    {
      //...
    }
}
0 голосов
/ 17 января 2020

Вы можете использовать CustomActionFilter для него как

  public class CustomDemoActionFilter : Attribute, IActionFilter
   {

         public void OnActionExecuting(ActionExecutingContext context)
    {

        var controller = context.Controller as Controller;
        if (controller == null) return;
        var controllerName = context.RouteData.Values["controller"];
        var actionName = context.RouteData.Values["action"];
        var message = String.Format("{0} controller:{1} action:{2}", "onactionexecuting", controllerName, actionName);
        var CurrentUrl = "/" + controllerName + "/" + actionName;

       bool IsExists = false;
       if(CurrentUrl=="/Home/Index")
       {
           IsExists=true;
       }
       else
       {
           IsExists=false;
       }           

        if (IsExists)
        {
          //do your conditional coding here.
          //context.Result = new RedirectToRouteResult(new RouteValueDictionary { { "controller", "Home" }, { "action", "Index" } });
        }
        else
        {
          //else your error page
            context.Result = new RedirectToRouteResult(new RouteValueDictionary { { "controller", "Home" }, { "action", "Error" } });
        }
        //base.OnActionExecuting(context);
    }


    public void OnActionExecuted(ActionExecutedContext context)
    {

    }
}

и просто использовать этот customactionfilter в качестве атрибута для вашего метода действия, например

    [HttpGet]
    [CustomHMISActionFilter]
    public IActionResult Registration()
   {
      //your code here
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...