Пример #1
0
        private async Task AuditAsync(HttpContext context, IAuditService auditService)
        {
            var statusCode = context.Response.StatusCode;
            var endpoint   = context.GetEndpoint();

            var auditModel = new AuditPostModel
            {
                StatusCode   = statusCode,
                IsSuccessful = statusCode >= 200 && statusCode < 300,
                Method       = context.Request.Method,
                Endpoint     = endpoint.Metadata?.GetMetadata <HttpMethodAttribute>()?.Template,
                // Do not display body when it concerns the user endpoints (sensitive data such as passwords
                // cannot be stored as plaintext)
                Request = endpoint.DisplayName.Contains("users", StringComparison.CurrentCultureIgnoreCase)
                    ? null : await GetRequestAsync(context),
            };

            _logger.LogInformation($"Attempting to audit model {auditModel.SerializeCamelCase()}.");
            await auditService.AddAuditTrailAsync(auditModel);
        }