From d7a4c4f82d461e57e7a0a74e394f0f90ea3f2c25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=B7=B3?= <454313500@qq.com> Date: Sun, 28 Apr 2024 15:10:47 +0800 Subject: [PATCH] Squashed commit of the following: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit df5224cf12dd0b084125f9537a7c73634ad92781 Author: 陈淳 <454313500@qq.com> Date: Sun Apr 28 15:10:10 2024 +0800 feat: 权限特性支持多标签 --- .../PermissionGlobalAttribute.cs | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/Authorization/PermissionGlobalAttribute.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/Authorization/PermissionGlobalAttribute.cs index 6183629d..3d5644cc 100644 --- a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/Authorization/PermissionGlobalAttribute.cs +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/Authorization/PermissionGlobalAttribute.cs @@ -20,12 +20,24 @@ namespace Yi.Framework.Rbac.Domain.Authorization public override void OnActionExecuting(ActionExecutingContext context) { if (context.ActionDescriptor is not ControllerActionDescriptor controllerActionDescriptor) return; - PermissionAttribute? perAttribute = controllerActionDescriptor.MethodInfo.GetCustomAttributes(inherit: true) - .FirstOrDefault(a => a.GetType().Equals(typeof(PermissionAttribute))) as PermissionAttribute; + List? perAttributes = controllerActionDescriptor.MethodInfo.GetCustomAttributes(inherit: true) + .Where(a => a.GetType().Equals(typeof(PermissionAttribute))) + .Select(x => x as PermissionAttribute) + .ToList()!; //空对象直接返回 - if (perAttribute is null) return; + if (perAttributes.Count==0) return; + + var result = false; + foreach (var perAttribute in perAttributes) + { + result = _permissionHandler.IsPass(perAttribute.Code); + //存在有一个不满,直接跳出 + if (!result) + { + break; + } + } - var result = _permissionHandler.IsPass(perAttribute.Code); if (!result) {