4.5 KiB
4.5 KiB
角色权限功能测试指南
功能说明
现在系统已经实现了完整的基于角色的菜单权限控制:
- 角色管理:可以创建、编辑、删除角色
- 权限配置:可以为每个角色配置可访问的菜单
- 用户管理:可以为用户分配一个或多个角色
- 权限生效:用户登录后只能看到其角色配置的菜单
测试步骤
1. 创建测试角色
进入 用户管理 > 角色管理,创建以下测试角色:
-
角色1:设备管理员
- 角色编码:
R_DEVICE_ADMIN - 角色名称:设备管理员
- 描述:负责设备管理相关功能
- 角色编码:
-
角色2:屏幕管理员
- 角色编码:
R_SCREEN_ADMIN - 角色名称:屏幕管理员
- 描述:负责屏幕监控相关功能
- 角色编码:
2. 配置角色权限
进入 用户管理 > 权限管理:
为"设备管理员"配置权限:
点击"配置权限"按钮,选择以下菜单:
- ✅ home(首页)
- ✅ device(设备管理)
- ✅ device_list(设备列表)
- ✅ device_group(设备分组)
- ✅ device_monitor(设备监控)
- ✅ device_online(在线设备)
- ✅ device_power(电源管理)
为"屏幕管理员"配置权限:
点击"配置权限"按钮,选择以下菜单:
- ✅ home(首页)
- ✅ screen(屏幕监控)
- ✅ screen_wall(监控墙)
- ✅ screen_control(远程控制)
- ✅ screen_record(录像回放)
3. 创建测试用户
进入 用户管理 > 用户列表:
创建设备管理员用户:
- 用户ID:
device_admin - 用户名:设备管理员
- 密码:
123456 - 角色:选择"设备管理员"
- 状态:启用
创建屏幕管理员用户:
- 用户ID:
screen_admin - 用户名:屏幕管理员
- 密码:
123456 - 角色:选择"屏幕管理员"
- 状态:启用
创建多角色用户:
- 用户ID:
multi_admin - 用户名:多角色管理员
- 密码:
123456 - 角色:同时选择"设备管理员"和"屏幕管理员"
- 状态:启用
4. 验证权限
测试1:设备管理员登录
- 退出当前账号
- 使用
device_admin/123456登录 - 预期结果:
- ✅ 可以看到"首页"菜单
- ✅ 可以看到"设备管理"及其所有子菜单
- ❌ 看不到"屏幕监控"菜单
- ❌ 看不到"用户管理"菜单
测试2:屏幕管理员登录
- 退出当前账号
- 使用
screen_admin/123456登录 - 预期结果:
- ✅ 可以看到"首页"菜单
- ✅ 可以看到"屏幕监控"及其所有子菜单
- ❌ 看不到"设备管理"菜单
- ❌ 看不到"用户管理"菜单
测试3:多角色用户登录
- 退出当前账号
- 使用
multi_admin/123456登录 - 预期结果:
- ✅ 可以看到"首页"菜单
- ✅ 可以看到"设备管理"及其所有子菜单
- ✅ 可以看到"屏幕监控"及其所有子菜单
- ❌ 看不到"用户管理"菜单
测试4:超级管理员
- 使用
admin/admin123登录 - 预期结果:
- ✅ 可以看到所有菜单(需要先为 R_SUPER 角色配置所有菜单权限)
技术实现
后端实现
RouteService.getUserRoutes()方法会:- 查询用户的角色列表
- 从
sys_role表查询角色配置的菜单 - 合并所有角色的菜单权限
- 返回用户可访问的路由列表
前端实现
- 用户列表页面动态加载角色选项
- 角色选择器显示角色中文名称
- 表格中显示角色名称(带颜色标签)
数据库
sys_role.menus字段存储角色可访问的菜单(逗号分隔)sys_user.roles字段存储用户的角色列表(逗号分隔)
注意事项
- 首次使用:需要先为现有的
R_SUPER和R_ADMIN角色配置菜单权限 - 角色状态:只有启用状态的角色才会生效
- 多角色:用户可以拥有多个角色,权限会合并
- 空权限:如果角色没有配置任何菜单,用户将看不到任何菜单(除了首页)
- 实时生效:修改角色权限后,用户需要重新登录才能看到变化
故障排查
问题1:用户看不到任何菜单
- 检查用户是否分配了角色
- 检查角色是否为启用状态
- 检查角色是否配置了菜单权限
问题2:权限修改后没有生效
- 用户需要退出并重新登录
- 检查后端日志是否有错误
问题3:角色选择器是空的
- 检查是否有启用状态的角色
- 检查浏览器控制台是否有 API 错误