From 8c0a19613ec26d25258df09e52545ee4d7d090cd Mon Sep 17 00:00:00 2001 From: dadiyang Date: Tue, 22 Sep 2026 00:08:10 +0800 Subject: [PATCH] fix(crm):数据权限切面对无登录用户的系统调用放行,修公海自动掉落 Null key(A34) --- yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/framework/permission/core/aop/CrmPermissionAspect.java | 7 +++++++ 1 file changed, 7 insertions(+), 0 deletions(-) diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/framework/permission/core/aop/CrmPermissionAspect.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/framework/permission/core/aop/CrmPermissionAspect.java index d490258..7837612 100644 --- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/framework/permission/core/aop/CrmPermissionAspect.java +++ b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/framework/permission/core/aop/CrmPermissionAspect.java @@ -45,6 +45,13 @@ public class CrmPermissionAspect { @Before("@annotation(crmPermission)") public void doBefore(JoinPoint joinPoint, CrmPermission crmPermission) { + // 0. 系统调用(定时任务/异步线程等,无登录用户)不走数据权限校验,直接放行。 + // 数据权限是“按登录用户”的访问控制;/admin-api 外部请求必然有登录用户, + // 故登录用户为 null 只可能是系统内部调用(如公海自动掉落定时任务),属可信进程。 + // 若在此校验,isCrmAdmin() 会以 null 用户查缓存,抛 Null key 异常导致业务失败。 + if (getUserId() == null) { + return; + } // 1.1 获取相关属性值 Map expressionValues = parseExpressions(joinPoint, crmPermission); Integer bizType = StrUtil.isEmpty(crmPermission.bizTypeValue()) ? -- libgit2 0.21.4