/// <summary> /// 构造函数 /// </summary> /// <param name="options"></param> /// <param name="serviceProvider"></param> protected SuktDbContextBase(DbContextOptions options, IServiceProvider serviceProvider) : base(options) { _serviceProvider = serviceProvider; _appOptionSettings = serviceProvider.GetAppSettings(); this._logger = serviceProvider.GetLogger(GetType()); _auditEntryDictionaryScoped = serviceProvider.GetService <AuditEntryDictionaryScoped>(); _changeTracker = _serviceProvider.GetService <IGetChangeTracker>(); _principal = serviceProvider.GetService <IPrincipal>(); }
/// <summary> /// 方法执行中 /// </summary> /// <param name="context"></param> public void OnActionExecuting(ActionExecutingContext context) { IServiceProvider serviceProvider = context.HttpContext.RequestServices; var controllerAction = context.ActionDescriptor as ControllerActionDescriptor; var isAuditEnabled = serviceProvider.GetAppSettings().AuditEnabled; if (isAuditEnabled) { AuditEntryDictionaryScoped auditEntryDictionaryScoped = serviceProvider.GetService <AuditEntryDictionaryScoped>(); AuditChangeInputDto auditChange = new AuditChangeInputDto(); auditChange.BrowserInformation = context.HttpContext.Request.Headers["User-Agent"].ToString(); auditChange.Ip = context.HttpContext.GetClientIP(); auditChange.FunctionName = $"{context.Controller.GetType().ToDescription()}-{controllerAction.MethodInfo.ToDescription()}"; auditChange.Action = context.HttpContext.Request.Path; auditChange.StartTime = DateTime.Now; auditEntryDictionaryScoped.AuditChange = auditChange; } }
/// <summary> /// 执行行动时 /// </summary> /// <param name="context"></param> public void OnActionExecuted(ActionExecutedContext context) { if (context.Result is ObjectResult result) { if (result.Value is AjaxResult ajax) { var type = ajax.Type; IServiceProvider provider = context.HttpContext.RequestServices; AuditEntryDictionaryScoped dict = provider.GetService <AuditEntryDictionaryScoped>(); if (!ajax.Success) { dict.AuditChange.Message = ajax.Message; } dict.AuditChange.ResultType = type; } } }