public void OnActionExecuting(ActionExecutingContext context) { IServiceProvider provider = context.HttpContext.RequestServices; IFunction function = context.GetExecuteFunction(); if (function == null) { return; } ScopedDictionary dict = provider.GetService <ScopedDictionary>(); dict.Function = function; // 数据权限有效角色,即有当前功能权限的角色 IFunctionAuthorization functionAuthorization = provider.GetService <IFunctionAuthorization>(); ClaimsPrincipal principal = context.HttpContext.User; string[] roleName = functionAuthorization.GetOkRoles(function, principal); dict.DataAuthValidRoleNames = roleName; IAuditingConfiguration configuration = provider.GetRequiredService <IAuditingConfiguration>(); if (!AuditingHelper.ShouldSaveAudit(configuration, principal, function, context.ActionDescriptor.GetMethodInfo())) { return; } AuditOperationEntry operation = new AuditOperationEntry { FunctionName = function.Name, ClientIpAddress = context.HttpContext.GetClientIp(), UserAgent = context.HttpContext.Request.Headers["User-Agent"].FirstOrDefault(), CreatedTime = DateTime.Now }; if (principal.Identity.IsAuthenticated && principal.Identity is ClaimsIdentity identity) { operation.UserId = identity.GetUserId(); operation.UserName = identity.GetUserName(); operation.NickName = identity.GetNickName(); } dict.AuditOperation = operation; }
/// <inheritdoc /> public override void OnActionExecuting(ActionExecutingContext context) { IServiceProvider provider = context.HttpContext.RequestServices; IFunction function = context.GetExecuteFunction(); if (function == null) { return; } ScopedDictionary dict = provider.GetService <ScopedDictionary>(); dict.Function = function; // 数据权限有效角色,即有当前功能权限的角色 IFunctionAuthorization functionAuthorization = provider.GetService <IFunctionAuthorization>(); string[] roleName = functionAuthorization.GetOkRoles(function, context.HttpContext.User); dict.DataAuthValidRoleNames = roleName; if (!function.AuditOperationEnabled) { return; } AuditOperationEntry operation = new AuditOperationEntry { FunctionName = function.Name, Ip = context.HttpContext.GetClientIp(), UserAgent = context.HttpContext.Request.Headers["User-Agent"].FirstOrDefault(), CreatedTime = DateTime.Now }; if (context.HttpContext.User.Identity.IsAuthenticated && context.HttpContext.User.Identity is ClaimsIdentity identity) { operation.UserId = identity.GetUserId(); operation.UserName = identity.GetUserName(); operation.NickName = identity.GetNickName(); } dict.AuditOperation = operation; }