Files
cattleTransportation/pc-cattle-transportation/USER_PERMISSION_TEST_GUIDE.md
2025-10-23 17:28:06 +08:00

289 lines
6.7 KiB
Markdown
Raw 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.

# 用户级权限管理系统测试验证指南
## 系统概述
已成功实施基于用户的权限管理系统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. **数据一致性**
- ✅ 权限数据存储正确
- ✅ 权限查询结果准确
- ✅ 权限更新及时生效
### 测试数据
**测试用户信息:**
- 用户A12.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. **功能完整性**:分配、清空、查询功能齐全
系统现在可以满足精细化的权限管理需求,同时保持原有系统的稳定性。