admin/ROLE_PERMISSION_TEST.md

149 lines
4.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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