149 lines
4.5 KiB
Markdown
149 lines
4.5 KiB
Markdown
# 角色权限功能测试指南
|
||
|
||
## 功能说明
|
||
|
||
现在系统已经实现了完整的基于角色的菜单权限控制:
|
||
|
||
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 错误
|