private void StoreAuditData(Audit audit, AuditingModes mode, AuditingLevel level) { bool storeInFile = false; if (mode == AuditingModes.DatabaseAndLogger) { AuditingContext context = new AuditingContext(); context.AuditRecords.Add(audit); context.SaveChanges(); storeInFile = true; } else if (mode == AuditingModes.DatabaseOnly) { AuditingContext context = new AuditingContext(); context.AuditRecords.Add(audit); context.SaveChanges(); } else if (mode == AuditingModes.LoggerOnly) { storeInFile = true; } if (storeInFile) { if (level == AuditingLevel.BasicData) { this.logger.StoreWithRequestData(audit); } else { this.logger.StoreWithoutRequestData(audit); } } }
/// <summary> /// Called by the ASP.NET MVC framework before the action method executes. /// </summary> /// <param name="filterContext">The filter context.</param> public void OnActionExecuting(ActionExecutingContext filterContext) { AuditAttribute auditAttribute = filterContext.ActionDescriptor.GetCustomAttributes(true).OfType <AuditAttribute>().FirstOrDefault(); if (auditAttribute == null) { return; } AuditingLevel level = auditAttribute.Level; int levelModifier = 0; //int levelModifier = this.config.Get<int>(ConfigKeys.Portal.AuditingLevelModifier, 0); if (levelModifier >= 0) //-1 means audit disabled completely { HttpRequestBase request = filterContext.HttpContext.Request; Audit audit = new Audit() { AuditID = Guid.NewGuid(), SessionID = this.GetSessionId(request), UserName = (request.IsAuthenticated) ? filterContext.HttpContext.User.Identity.Name : "Anonymous", IPAddress = request.ServerVariables["HTTP_X_FORWARDED_FOR"] ?? request.UserHostAddress, AreaAccessed = request.RawUrl, Timestamp = DateTime.UtcNow, Data = this.SerializeRequest(request, (uint)levelModifier, level) }; AuditingModes mode = AuditingModes.DatabaseAndLogger; this.StoreAuditData(audit, mode, level); } }
public Task <HttpResponseMessage> ExecuteActionFilterAsync(HttpActionContext actionContext, CancellationToken cancellationToken, Func <Task <HttpResponseMessage> > continuation) { AuditAttribute auditAttribute = actionContext.ActionDescriptor.GetCustomAttributes <AuditAttribute>().FirstOrDefault(); if (auditAttribute == null) { return(continuation()); } AuditingLevel level = auditAttribute.Level; int levelModifier = 0; if (levelModifier >= 0) //-1 means audit disabled completely { Audit audit = new Audit() { AuditID = Guid.NewGuid(), SessionID = "", UserName = (actionContext.RequestContext.Principal.Identity.IsAuthenticated) ? actionContext.RequestContext.Principal.Identity.Name : "Anonymous", IPAddress = actionContext.Request.GetClientIp(), AreaAccessed = actionContext.Request.RequestUri.ToString(), Timestamp = DateTimeOffset.UtcNow, Data = "" }; AuditingModes mode = AuditingModes.DatabaseAndLogger; this.StoreAuditData(audit, mode, level); } return(continuation()); }