权限、菜单和白名单
本文整理 DGJ2.0 后台菜单、资源权限、服务站白名单和 OPS 菜单控制。新增页面、按钮、接口或限制服务站能力时,先看这里。
业务目标
- 知道菜单、资源、数据权限和白名单分别落在哪些表。
- 知道新增功能时需要补哪些配置。
- 排查“用户看不到菜单”“按钮没权限”“某服务站功能不可用”的问题。
入口文件
- OPS 白名单:
application/controllers/inner/sys/OpsWhitelist.php - 菜单规则服务:
application/Services/MenuRule/MenuRuleSer.php - 系统/用户相关控制器:
application/controllers/inner/User.php、Access.php、Manage.php - 后台菜单相关表常量:
application/config/tables.php - Redis key:
application/KzData/Enums/RedisKeys.php
核心表
| 表 | 用途 | | --- | --- | | t_acl_sys_resource | 系统资源 | | t_acl_sys_resource_rule | 资源权限规则 | | t_sys_admin | 系统用户 | | t_sys_menu | 功能菜单权限 | | t_sys_menu_data | 数据权限 | | t_sys_menu_config | 菜单配置 | | t_sys_ops_menu_rule | OPS 控制店管家菜单规则 | | t_sys_ops_menu_rule_new | OPS 控制新店管家菜单规则 | | t_sys_ops_whitelist | 服务站白名单 | | t_admin_special_authority_control | 特殊权限控制 |
主流程
- 页面/按钮是否显示,先看菜单和资源配置。
- 接口是否允许访问,继续看控制器鉴权、资源规则和登录态。
- 服务站是否有功能能力,看 OPS 白名单、菜单规则、服务站版本、特殊权限。
- 如果是采购/销售能力黑名单,查
MenuRuleSer.php中 Redis 黑名单逻辑。
常见排查
| 现象 | 检查顺序 | | --- | --- | | 用户没有菜单 | t_sys_menu、角色/资源关系、用户角色 | | 有菜单但按钮不可点 | 按钮资源、t_acl_sys_resource_rule、前端权限码 | | 接口提示无权限 | 登录态、控制器鉴权、资源规则、token | | 某服务站看不到新功能 | t_sys_ops_whitelist、服务站版本、OPS 菜单规则 | | 采购/销售入口被锁 | MenuRuleSer.php、Redis 黑名单、OPS 规则 |
常用 rg 命令
rg -n "OpsWhitelist|SYS_OPS_WHITELIST|SYS_MENU_CONFIG|SYS_OPS_MENU_RULE" application
rg -n "HASH_PURCHASE_STATION_BLACKLIST|HASH_SALE_STATION_BLACKLIST|MenuRuleSer" application
rg -n "ACL_SYS_RESOURCE|ACL_SYS_RESOURCE_RULE|SYS_MENU_DATA" application/config application/controllers application/Services
改动风险和回归清单
- 新增菜单:回归管理员、普通用户、有/无角色用户。
- 新增按钮权限:回归页面显示和接口真实鉴权。
- 新增服务站白名单:回归白名单内、白名单外、黑名单服务站。
- 修改菜单规则缓存:回归 Redis 刷新和旧缓存失效。