# 角色权限功能测试指南 ## 功能说明 现在系统已经实现了完整的基于角色的菜单权限控制: 1. **角色管理**:可以创建、编辑、删除角色 2. **权限配置**:可以为每个角色配置可访问的菜单 3. **用户管理**:可以为用户分配一个或多个角色 4. **权限生效**:用户登录后只能看到其角色配置的菜单 ## 测试步骤 ### 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:设备管理员登录 1. 退出当前账号 2. 使用 `device_admin` / `123456` 登录 3. **预期结果**: - ✅ 可以看到"首页"菜单 - ✅ 可以看到"设备管理"及其所有子菜单 - ❌ 看不到"屏幕监控"菜单 - ❌ 看不到"用户管理"菜单 #### 测试2:屏幕管理员登录 1. 退出当前账号 2. 使用 `screen_admin` / `123456` 登录 3. **预期结果**: - ✅ 可以看到"首页"菜单 - ✅ 可以看到"屏幕监控"及其所有子菜单 - ❌ 看不到"设备管理"菜单 - ❌ 看不到"用户管理"菜单 #### 测试3:多角色用户登录 1. 退出当前账号 2. 使用 `multi_admin` / `123456` 登录 3. **预期结果**: - ✅ 可以看到"首页"菜单 - ✅ 可以看到"设备管理"及其所有子菜单 - ✅ 可以看到"屏幕监控"及其所有子菜单 - ❌ 看不到"用户管理"菜单 #### 测试4:超级管理员 1. 使用 `admin` / `admin123` 登录 2. **预期结果**: - ✅ 可以看到所有菜单(需要先为 R_SUPER 角色配置所有菜单权限) ## 技术实现 ### 后端实现 - `RouteService.getUserRoutes()` 方法会: 1. 查询用户的角色列表 2. 从 `sys_role` 表查询角色配置的菜单 3. 合并所有角色的菜单权限 4. 返回用户可访问的路由列表 ### 前端实现 - 用户列表页面动态加载角色选项 - 角色选择器显示角色中文名称 - 表格中显示角色名称(带颜色标签) ### 数据库 - `sys_role.menus` 字段存储角色可访问的菜单(逗号分隔) - `sys_user.roles` 字段存储用户的角色列表(逗号分隔) ## 注意事项 1. **首次使用**:需要先为现有的 `R_SUPER` 和 `R_ADMIN` 角色配置菜单权限 2. **角色状态**:只有启用状态的角色才会生效 3. **多角色**:用户可以拥有多个角色,权限会合并 4. **空权限**:如果角色没有配置任何菜单,用户将看不到任何菜单(除了首页) 5. **实时生效**:修改角色权限后,用户需要重新登录才能看到变化 ## 故障排查 ### 问题1:用户看不到任何菜单 - 检查用户是否分配了角色 - 检查角色是否为启用状态 - 检查角色是否配置了菜单权限 ### 问题2:权限修改后没有生效 - 用户需要退出并重新登录 - 检查后端日志是否有错误 ### 问题3:角色选择器是空的 - 检查是否有启用状态的角色 - 检查浏览器控制台是否有 API 错误