# 用户级权限管理系统测试验证指南 ## 系统概述 已成功实施基于用户的权限管理系统(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. **功能完整性**:分配、清空、查询功能齐全 系统现在可以满足精细化的权限管理需求,同时保持原有系统的稳定性。