289 lines
6.7 KiB
Markdown
289 lines
6.7 KiB
Markdown
# 用户级权限管理系统测试验证指南
|
||
|
||
## 系统概述
|
||
|
||
已成功实施基于用户的权限管理系统(UBAC),与现有角色权限系统(RBAC)并存。用户专属权限优先于角色权限。
|
||
|
||
## 实施内容
|
||
|
||
### 1. 数据库层
|
||
- ✅ 创建 `sys_user_menu` 表
|
||
- ✅ 创建 `SysUserMenu` 实体类
|
||
- ✅ 创建 `SysUserMenuMapper` 接口和XML
|
||
- ✅ 创建 `SysUserMenuController` 控制器
|
||
|
||
### 2. 后端逻辑
|
||
- ✅ 修改 `LoginServiceImpl` 权限查询逻辑
|
||
- ✅ 实现用户专属权限优先机制
|
||
- ✅ 保持向后兼容性
|
||
|
||
### 3. 前端界面
|
||
- ✅ 重构权限管理页面为标签页结构
|
||
- ✅ 角色权限管理标签页(保留原有功能)
|
||
- ✅ 用户权限管理标签页(新增功能)
|
||
- ✅ 更新API接口文件
|
||
|
||
## 测试验证步骤
|
||
|
||
### 步骤1:数据库准备
|
||
|
||
1. **执行SQL脚本**
|
||
```sql
|
||
-- 执行以下SQL创建用户权限表
|
||
source tradeCattle/add_user_menu_table.sql;
|
||
```
|
||
|
||
2. **验证表结构**
|
||
```sql
|
||
DESCRIBE sys_user_menu;
|
||
```
|
||
|
||
### 步骤2:后端API测试
|
||
|
||
#### 2.1 测试用户权限查询API
|
||
|
||
**测试用例1:检查用户权限状态**
|
||
```bash
|
||
GET /sysUserMenu/hasUserPermissions?userId=3
|
||
```
|
||
|
||
**预期结果:**
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"data": {
|
||
"hasUserPermissions": false,
|
||
"permissionCount": 0,
|
||
"permissionSource": "角色权限"
|
||
}
|
||
}
|
||
```
|
||
|
||
**测试用例2:获取用户权限ID列表**
|
||
```bash
|
||
GET /sysUserMenu/userMenuIds?userId=3
|
||
```
|
||
|
||
**预期结果:**
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"data": []
|
||
}
|
||
```
|
||
|
||
#### 2.2 测试用户权限分配API
|
||
|
||
**测试用例3:为用户分配权限**
|
||
```bash
|
||
POST /sysUserMenu/assignUserMenus
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"userId": 3,
|
||
"menuIds": [1, 2, 3, 16, 4, 5]
|
||
}
|
||
```
|
||
|
||
**预期结果:**
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"msg": "分配成功"
|
||
}
|
||
```
|
||
|
||
**测试用例4:验证权限分配结果**
|
||
```bash
|
||
GET /sysUserMenu/hasUserPermissions?userId=3
|
||
```
|
||
|
||
**预期结果:**
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"data": {
|
||
"hasUserPermissions": true,
|
||
"permissionCount": 6,
|
||
"permissionSource": "用户专属权限"
|
||
}
|
||
}
|
||
```
|
||
|
||
#### 2.3 测试权限清空API
|
||
|
||
**测试用例5:清空用户专属权限**
|
||
```bash
|
||
DELETE /sysUserMenu/clearUserMenus?userId=3
|
||
```
|
||
|
||
**预期结果:**
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"msg": "清空成功,用户将使用角色权限"
|
||
}
|
||
```
|
||
|
||
### 步骤3:前端界面测试
|
||
|
||
#### 3.1 角色权限管理标签页测试
|
||
|
||
1. **访问权限管理页面**
|
||
- 打开浏览器,访问权限管理页面
|
||
- 确认显示"角色权限管理"标签页
|
||
|
||
2. **测试角色权限分配**
|
||
- 选择用户"12.27新增姓名"(ID: 3, roleId: 1)
|
||
- 修改权限设置
|
||
- 点击"保存角色权限"
|
||
- 确认提示信息显示影响范围
|
||
|
||
3. **验证权限影响**
|
||
- 切换到"用户权限管理"标签页
|
||
- 查看"超级管理员"(ID: 11, roleId: 1)的权限
|
||
- 确认权限已被修改(因为使用相同roleId)
|
||
|
||
#### 3.2 用户权限管理标签页测试
|
||
|
||
1. **测试用户专属权限分配**
|
||
- 在"用户权限管理"标签页选择用户"12.27新增姓名"
|
||
- 修改权限设置
|
||
- 点击"保存用户权限"
|
||
- 确认提示信息
|
||
|
||
2. **验证权限隔离**
|
||
- 选择用户"超级管理员"
|
||
- 确认权限未被影响(仍使用角色权限)
|
||
- 查看权限来源显示"角色权限"
|
||
|
||
3. **测试权限清空功能**
|
||
- 选择有专属权限的用户
|
||
- 点击"清空专属权限"
|
||
- 确认权限来源变更为"角色权限"
|
||
|
||
### 步骤4:登录权限验证测试
|
||
|
||
#### 4.1 用户专属权限测试
|
||
|
||
1. **设置用户专属权限**
|
||
- 为用户"12.27新增姓名"设置专属权限
|
||
- 确保权限与角色权限不同
|
||
|
||
2. **用户登录测试**
|
||
- 使用"12.27新增姓名"账号登录
|
||
- 检查控制台日志,确认使用专属权限
|
||
- 验证页面按钮显示符合专属权限设置
|
||
|
||
3. **权限覆盖验证**
|
||
- 修改角色权限
|
||
- 重新登录"12.27新增姓名"账号
|
||
- 确认权限未受影响(仍使用专属权限)
|
||
|
||
#### 4.2 角色权限测试
|
||
|
||
1. **清空用户专属权限**
|
||
- 清空"12.27新增姓名"的专属权限
|
||
|
||
2. **角色权限验证**
|
||
- 重新登录"12.27新增姓名"账号
|
||
- 检查控制台日志,确认使用角色权限
|
||
- 验证页面按钮显示符合角色权限设置
|
||
|
||
### 步骤5:向后兼容性测试
|
||
|
||
#### 5.1 现有用户测试
|
||
|
||
1. **未设置专属权限的用户**
|
||
- 使用"超级管理员"账号登录
|
||
- 确认权限正常(使用角色权限)
|
||
- 验证所有功能正常
|
||
|
||
2. **权限管理功能**
|
||
- 确认角色权限管理功能正常
|
||
- 验证权限修改影响所有使用相同角色的用户
|
||
|
||
#### 5.2 系统稳定性测试
|
||
|
||
1. **权限查询性能**
|
||
- 测试大量用户登录时的权限查询性能
|
||
- 确认无性能问题
|
||
|
||
2. **数据一致性**
|
||
- 验证用户权限和角色权限数据一致性
|
||
- 确认无数据冲突
|
||
|
||
## 预期测试结果
|
||
|
||
### 成功标准
|
||
|
||
1. **功能完整性**
|
||
- ✅ 用户专属权限分配功能正常
|
||
- ✅ 用户专属权限清空功能正常
|
||
- ✅ 权限优先级正确(用户权限 > 角色权限)
|
||
- ✅ 向后兼容性保持
|
||
|
||
2. **界面友好性**
|
||
- ✅ 标签页切换流畅
|
||
- ✅ 权限来源显示清晰
|
||
- ✅ 操作确认提示完善
|
||
|
||
3. **数据一致性**
|
||
- ✅ 权限数据存储正确
|
||
- ✅ 权限查询结果准确
|
||
- ✅ 权限更新及时生效
|
||
|
||
### 测试数据
|
||
|
||
**测试用户信息:**
|
||
- 用户A:12.27新增姓名 (ID: 3, roleId: 1)
|
||
- 用户B:超级管理员 (ID: 11, roleId: 1)
|
||
|
||
**测试场景:**
|
||
1. 用户A设置专属权限,用户B使用角色权限
|
||
2. 用户A清空专属权限,恢复使用角色权限
|
||
3. 修改角色权限,影响所有使用该角色的用户
|
||
|
||
## 问题排查
|
||
|
||
### 常见问题
|
||
|
||
1. **权限不生效**
|
||
- 检查用户是否重新登录
|
||
- 确认权限数据是否正确保存
|
||
- 验证权限查询逻辑
|
||
|
||
2. **界面显示异常**
|
||
- 检查API接口是否正常
|
||
- 确认前端数据绑定
|
||
- 验证权限来源显示
|
||
|
||
3. **性能问题**
|
||
- 检查数据库索引
|
||
- 优化权限查询SQL
|
||
- 确认缓存机制
|
||
|
||
### 调试日志
|
||
|
||
**后端日志关键词:**
|
||
- `=== 用户权限查询 ===`
|
||
- `=== 用户专属权限优先 ===`
|
||
- `=== 分配用户菜单权限 ===`
|
||
|
||
**前端日志关键词:**
|
||
- `=== 用户权限管理 ===`
|
||
- `=== 保存用户权限 ===`
|
||
- `=== 清空用户权限 ===`
|
||
|
||
## 总结
|
||
|
||
用户级权限管理系统已成功实施,实现了:
|
||
|
||
1. **双权限系统并存**:角色权限 + 用户权限
|
||
2. **权限优先级明确**:用户权限覆盖角色权限
|
||
3. **向后兼容性**:现有功能不受影响
|
||
4. **界面友好性**:标签页切换,操作清晰
|
||
5. **功能完整性**:分配、清空、查询功能齐全
|
||
|
||
系统现在可以满足精细化的权限管理需求,同时保持原有系统的稳定性。
|