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;
        }
示例#2
0
        /// <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;
        }