You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

1.3 KiB

05 — 权限码并集注入(按钮级鉴权)

What to build: 用户登录后,PermissionServiceImpl.initDataScopeContext 在计算数据范围时顺带计算权限码并集——查用户所有角色授权的按钮节点(type=button 且 status=enabled),收集各节点的 perms 字符串,与 roleCode 一起填入 Spring Security authority。停用的权限点(status=disabled)不进并集——全局断路,无需逐角色取消授权。重新启用后原授权自动恢复。

Blocked by: 01(需要 SysMenu 的 perms/status 字段 + MenuType 枚举)。

Status: ready-for-agent

  • initDataScopeContext 在现有数据范围计算后追加权限码并集:查 sys_user_rolesys_role_menusys_menu(过滤 menuType=3 且 status='enabled')→ 收集 perms 去重
  • 权限码(perms)与角色码(roleCode)一起填入 SecurityUtils.getAuthorities(),使 @PreAuthorize("hasAuthority('crm:xxx:yyy')") 可用
  • 停用的权限点(status=disabled):即使角色已授权,perms 不进并集
  • 重新启用后(status=enabled):perms 自动恢复进并集,无需管理员重新勾选
  • 现有 JwtAuthenticationFilter 的 authority 注入逻辑不退化
  • TDD 测试覆盖:有按钮权限时 authority 含 perms、停用按钮不进并集、重新启用恢复