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

6.7 KiB
Raw Blame History

用户级权限管理系统测试验证指南

系统概述

已成功实施基于用户的权限管理系统UBAC与现有角色权限系统RBAC并存。用户专属权限优先于角色权限。

实施内容

1. 数据库层

  • 创建 sys_user_menu
  • 创建 SysUserMenu 实体类
  • 创建 SysUserMenuMapper 接口和XML
  • 创建 SysUserMenuController 控制器

2. 后端逻辑

  • 修改 LoginServiceImpl 权限查询逻辑
  • 实现用户专属权限优先机制
  • 保持向后兼容性

3. 前端界面

  • 重构权限管理页面为标签页结构
  • 角色权限管理标签页(保留原有功能)
  • 用户权限管理标签页(新增功能)
  • 更新API接口文件

测试验证步骤

步骤1数据库准备

  1. 执行SQL脚本

    -- 执行以下SQL创建用户权限表
    source tradeCattle/add_user_menu_table.sql;
    
  2. 验证表结构

    DESCRIBE sys_user_menu;
    

步骤2后端API测试

2.1 测试用户权限查询API

测试用例1检查用户权限状态

GET /sysUserMenu/hasUserPermissions?userId=3

预期结果:

{
  "code": 200,
  "data": {
    "hasUserPermissions": false,
    "permissionCount": 0,
    "permissionSource": "角色权限"
  }
}

测试用例2获取用户权限ID列表

GET /sysUserMenu/userMenuIds?userId=3

预期结果:

{
  "code": 200,
  "data": []
}

2.2 测试用户权限分配API

测试用例3为用户分配权限

POST /sysUserMenu/assignUserMenus
Content-Type: application/json

{
  "userId": 3,
  "menuIds": [1, 2, 3, 16, 4, 5]
}

预期结果:

{
  "code": 200,
  "msg": "分配成功"
}

测试用例4验证权限分配结果

GET /sysUserMenu/hasUserPermissions?userId=3

预期结果:

{
  "code": 200,
  "data": {
    "hasUserPermissions": true,
    "permissionCount": 6,
    "permissionSource": "用户专属权限"
  }
}

2.3 测试权限清空API

测试用例5清空用户专属权限

DELETE /sysUserMenu/clearUserMenus?userId=3

预期结果:

{
  "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. 功能完整性:分配、清空、查询功能齐全

系统现在可以满足精细化的权限管理需求,同时保持原有系统的稳定性。