【问题标题】:.NET Core Audit Logging.NET Core 审计日志
【发布时间】:2020-05-04 00:14:16
【问题描述】:

我想在我的 .NET Core 应用程序中实现审核日志记录。 类似的东西

[HttpPost, Auditing]
public dynamic SomeApiAction()
{
    // API code here
    ... 
}

属性应该能够在执行之前和之后拦截API调用以便记录。

.net 核心中是否有任何此类机制作为框架的一部分?我不想使用任何第三方组件。 请指教。

【问题讨论】:

    标签: api .net-core audit


    【解决方案1】:

    您可以尝试Audit.WebApi 库,它是Audit.NET 框架的一部分。它提供了一个可配置的基础架构来记录与您的 Asp.NET Core Web API 的交互。

    例如使用属性:

    using Audit.WebApi;
    
    public class UsersController : ApiController
    {
        [HttpPost]
        [AuditApi(IncludeHeaders = true)]
        public IHttpActionResult Post()
        {
          //...
        }
    }
    

    【讨论】:

    • 你应该表明你是框架的作者。
    • 是的,我是 :) 但如果我这样表示有什么区别?
    • 没关系,但你应该指出它。请参阅“避免公开的自我推销”:stackoverflow.com/help/behavior
    【解决方案2】:

    您可以像使用 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
    }
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-26
      • 2018-01-25
      • 2012-08-31
      • 2011-10-24
      • 2020-04-13
      • 2011-08-05
      • 2010-10-11
      • 2012-10-01
      相关资源
      最近更新 更多