7.3 KiB
7.3 KiB
角色权限配置指南
作者:湖北新华业务中台研发团队
日期:2026-01-31
用途:管理员角色菜单权限配置和问题修复
一、问题说明
1.1 问题现象
登录管理后台后,左侧菜单栏只显示盘古业务菜单,缺少RuoYi系统管理菜单:
缺失菜单:
- ❌ 系统管理(用户管理、角色管理、菜单管理、部门管理等)
- ❌ 系统监控(在线用户、定时任务、数据监控等)
- ❌ 系统工具(表单构建、代码生成、系统接口)
- ❌ 盘古官网
仅显示:
- ✅ 盘古管理(学校、会员、学生、应用、基础数据)
1.2 原因分析
根本原因:管理员角色(role_id=1)缺少RuoYi系统菜单的权限
验证方法:
-- 检查管理员角色的菜单权限数量
SELECT COUNT(*) FROM sys_role_menu WHERE role_id = 1;
-- 统计各类型菜单权限
SELECT
CASE
WHEN m.menu_id < 2000 THEN 'RuoYi系统菜单'
ELSE '盘古业务菜单'
END AS menu_type,
COUNT(*) as count
FROM sys_role_menu rm
INNER JOIN sys_menu m ON rm.menu_id = m.menu_id
WHERE rm.role_id = 1
GROUP BY CASE WHEN m.menu_id < 2000 THEN 'RuoYi系统菜单' ELSE '盘古业务菜单' END;
问题权限配置:
RuoYi系统菜单:0条 ❌ (应该有72条)
盘古业务菜单: 30条 ✅
合计: 30条 ❌ (应该有118条)
二、解决方案
2.1 方法一:使用修复脚本(推荐)
步骤1:进入SQL目录
cd /path/to/pangu-user-platform/sql
步骤2:执行修复脚本
./fix_admin_permissions.sh
步骤3:按提示确认
是否为管理员角色添加所有菜单权限?(y/n): y
步骤4:退出登录并重新登录
⚠️ 重要:权限修改后,必须退出登录并重新登录才会生效!
2.2 方法二:手动执行SQL
-- 1. 删除管理员角色现有权限
DELETE FROM sys_role_menu WHERE role_id = 1;
-- 2. 为管理员角色添加所有菜单权限
INSERT INTO sys_role_menu (role_id, menu_id)
SELECT 1, menu_id FROM sys_menu;
-- 3. 验证权限数量
SELECT COUNT(*) as total FROM sys_role_menu WHERE role_id = 1;
-- 预期结果:118条
2.3 方法三:通过管理界面配置
步骤:
- 以管理员身份登录(如果能看到系统管理菜单)
- 进入 系统管理 > 角色管理
- 点击超级管理员角色的修改按钮
- 在菜单权限标签页,勾选所有菜单
- 点击提交保存
注意:此方法前提是能看到系统管理菜单。如果看不到,请使用方法一或方法二。
三、验证结果
3.1 数据库验证
-- 验证权限总数
SELECT COUNT(*) as total FROM sys_role_menu WHERE role_id = 1;
-- 预期结果:118条
-- 验证各类型菜单权限
SELECT
CASE
WHEN m.menu_id < 2000 THEN 'RuoYi系统菜单'
ELSE '盘古业务菜单'
END AS menu_type,
COUNT(*) as count
FROM sys_role_menu rm
INNER JOIN sys_menu m ON rm.menu_id = m.menu_id
WHERE rm.role_id = 1
GROUP BY CASE WHEN m.menu_id < 2000 THEN 'RuoYi系统菜单' ELSE '盘古业务菜单' END;
-- 预期结果:
-- RuoYi系统菜单 72
-- 盘古业务菜单 46
-- 验证顶级菜单权限
SELECT m.menu_id, m.menu_name, m.order_num
FROM sys_menu m
INNER JOIN sys_role_menu rm ON m.menu_id = rm.menu_id
WHERE rm.role_id = 1 AND m.parent_id = 0
ORDER BY m.order_num;
-- 预期结果:盘古管理、系统管理、系统监控、系统工具、盘古官网
3.2 前端页面验证
退出登录并重新登录后,菜单栏应显示:
📋 盘古管理 ✅
├─ 学校管理
├─ 会员管理
├─ 学生管理
├─ 应用管理
└─ 基础数据
⚙️ 系统管理 ✅ (新增)
├─ 用户管理
├─ 角色管理
├─ 菜单管理
├─ 部门管理
├─ 岗位管理
├─ 字典管理
├─ 参数设置
├─ 通知公告
└─ 日志管理
📊 系统监控 ✅ (新增)
├─ 在线用户
├─ 定时任务
├─ 数据监控
├─ 服务监控
└─ 缓存监控
🔧 系统工具 ✅ (新增)
├─ 表单构建
├─ 代码生成
└─ 系统接口
🌐 盘古官网 ✅ (新增)
四、角色权限管理
4.1 权限分配原则
| 角色 | 权限范围 | 建议配置 |
|---|---|---|
| 超级管理员 | 所有菜单 | 118个菜单全部勾选 ✅ |
| 普通管理员 | 业务菜单 | 盘古管理46个菜单 ✅ |
| 教师 | 部分业务菜单 | 会员管理、学生管理 ✅ |
| 家长 | 查看功能 | 学生查询、学校查询 ✅ |
4.2 新建角色权限配置
步骤:
- 系统管理 > 角色管理 > 点击新增
- 填写角色信息(角色名称、权限字符、排序)
- 设置菜单权限:
- 系统管理员:勾选所有菜单
- 业务管理员:只勾选盘古管理下的菜单
- 教师/家长:根据需要勾选特定菜单
- 设置数据权限(本部门数据/全部数据等)
- 点击提交保存
4.3 修改用户角色
步骤:
- 系统管理 > 用户管理 > 点击用户的修改按钮
- 在角色下拉框中选择角色
- 点击提交保存
- ⚠️ 用户需要退出登录并重新登录
五、常见问题
Q1:修复权限后仍然看不到菜单?
A:请按以下步骤排查:
- ✅ 退出登录并重新登录(必须!)
- ✅ 清除浏览器缓存
- ✅ 检查菜单状态:
SELECT menu_id, menu_name, visible, status FROM sys_menu WHERE parent_id = 0;visible = '0'表示显示status = '0'表示正常
- ✅ 检查用户角色:
SELECT * FROM sys_user_role WHERE user_id = 1;
Q2:只想给部分菜单权限怎么办?
A:不要使用修复脚本,通过管理界面手动勾选:
- 系统管理 > 角色管理 > 修改角色
- 在菜单权限标签页,只勾选需要的菜单
- 点击提交保存
Q3:新用户如何分配权限?
A:
- 系统管理 > 用户管理 > 新增用户
- 在角色下拉框中选择合适的角色
- 如果需要特殊权限,先创建新角色再分配
Q4:权限修复脚本会影响其他角色吗?
A:不会。脚本只修复role_id=1(超级管理员)的权限,其他角色不受影响。
六、权限数据备份
6.1 备份权限数据
-- 备份所有角色权限
CREATE TABLE sys_role_menu_backup_20260131 AS
SELECT * FROM sys_role_menu;
-- 备份用户角色关系
CREATE TABLE sys_user_role_backup_20260131 AS
SELECT * FROM sys_user_role;
6.2 恢复权限数据
-- 恢复角色权限
TRUNCATE TABLE sys_role_menu;
INSERT INTO sys_role_menu SELECT * FROM sys_role_menu_backup_20260131;
-- 恢复用户角色
TRUNCATE TABLE sys_user_role;
INSERT INTO sys_user_role SELECT * FROM sys_user_role_backup_20260131;
七、相关文件
| 文件路径 | 说明 |
|---|---|
sql/fix_admin_permissions.sh |
管理员权限自动修复脚本 |
sql/sys_menu_complete.sql |
完整菜单数据SQL |
docs/07-运维文档/菜单数据恢复指南.md |
菜单数据恢复文档 |
八、技术支持
如有问题,请联系:湖北新华业务中台研发团队
最后更新:2026-01-31