admin/ROLE_PERMISSION_TEST.md

4.5 KiB
Raw Blame History

角色权限功能测试指南

功能说明

现在系统已经实现了完整的基于角色的菜单权限控制:

  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. 创建测试用户

进入 用户管理 > 用户列表

创建设备管理员用户:

  • 用户IDdevice_admin
  • 用户名:设备管理员
  • 密码:123456
  • 角色:选择"设备管理员"
  • 状态:启用

创建屏幕管理员用户:

  • 用户IDscreen_admin
  • 用户名:屏幕管理员
  • 密码:123456
  • 角色:选择"屏幕管理员"
  • 状态:启用

创建多角色用户:

  • 用户IDmulti_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_SUPERR_ADMIN 角色配置菜单权限
  2. 角色状态:只有启用状态的角色才会生效
  3. 多角色:用户可以拥有多个角色,权限会合并
  4. 空权限:如果角色没有配置任何菜单,用户将看不到任何菜单(除了首页)
  5. 实时生效:修改角色权限后,用户需要重新登录才能看到变化

故障排查

问题1用户看不到任何菜单

  • 检查用户是否分配了角色
  • 检查角色是否为启用状态
  • 检查角色是否配置了菜单权限

问题2权限修改后没有生效

  • 用户需要退出并重新登录
  • 检查后端日志是否有错误

问题3角色选择器是空的

  • 检查是否有启用状态的角色
  • 检查浏览器控制台是否有 API 错误