Skip to content

权限管理使用手册

概述

权限管理模块用于管理系统的权限体系,包括管理员权限、角色权限、菜单权限等。通过权限管理,可以精确控制不同管理员对系统功能的访问权限,确保系统安全。

功能说明

核心功能

  • 管理员管理:管理管理员账号和基本信息
  • 角色管理:管理角色和角色权限
  • 菜单管理:管理菜单结构和API权限
  • 权限分配:为角色分配具体的权限
  • 权限验证:验证管理员的操作权限

业务价值

  • 确保系统安全
  • 精确控制访问权限
  • 规范管理员操作
  • 便于权限审计

权限体系架构

权限层级

管理员 → 角色 → 菜单权限 → API权限

权限类型

类型说明特点
目录(directory)菜单分组用于组织菜单结构
菜单(menu)页面菜单对应前端页面
按钮(button)操作按钮对应API接口权限

操作指南

1. 菜单管理

访问路径

管理后台 → 系统管理 → 菜单管理

菜单类型说明

目录类型
  • 用途:用于组织菜单结构,作为菜单分组
  • 特点:不包含具体功能,只用于分类
  • 配置
    • 名称:目录显示名称
    • 图标:目录图标
    • 排序:显示顺序
    • 父级:上级目录
菜单类型
  • 用途:对应前端页面,用户可以访问的页面
  • 特点:包含页面路径和组件信息
  • 配置
    • 名称:菜单显示名称
    • 路径:前端路由路径
    • 组件:前端组件名称
    • 图标:菜单图标
    • 父级:上级目录或菜单
按钮类型
  • 用途:对应API接口权限,控制具体操作
  • 特点:必须配置API URL,用于权限验证
  • 配置
    • 名称:按钮显示名称
    • API URL:对应的API接口地址
    • 父级:上级菜单

创建菜单

创建目录
  1. 点击"添加菜单"按钮
  2. 选择菜单类型为"目录"
  3. 填写目录信息:
    • 名称:如"用户管理"
    • 图标:选择合适图标
    • 排序:设置显示顺序
    • 父级:选择上级目录
  4. 点击"保存"
创建菜单
  1. 点击"添加菜单"按钮
  2. 选择菜单类型为"菜单"
  3. 填写菜单信息:
    • 名称:如"用户列表"
    • 路径:如"/user/list"
    • 组件:如"UserList"
    • 图标:选择合适图标
    • 父级:选择"用户管理"目录
  4. 点击"保存"
创建按钮
  1. 点击"添加菜单"按钮
  2. 选择菜单类型为"按钮"
  3. 填写按钮信息:
    • 名称:如"添加用户"
    • API URL:如"/adminapi/user/user"
    • 父级:选择"用户列表"菜单
  4. 点击"保存"

2. API URL配置

API URL格式

API URL必须与后端路由规则完全匹配,格式如下:

/adminapi/模块/控制器/方法

常见API URL示例

用户管理相关
/adminapi/user/user/pages          # 获取用户分页列表
/adminapi/user/user                # 创建用户
/adminapi/user/user/<id>           # 更新用户信息
/adminapi/user/user/<id>           # 获取用户详情
/adminapi/user/user/relation/list  # 获取推广关系列表
商户管理相关
/adminapi/merchant/pages           # 获取商户分页列表
/adminapi/merchant                  # 创建商户
/adminapi/merchant/<id>            # 更新商户信息
/adminapi/merchant/<id>            # 获取商户详情
/adminapi/merchant/audit/<id>      # 审核商户申请
店铺管理相关
/adminapi/tbl-store/pages          # 获取店铺分页列表
/adminapi/tbl-store/info/<id>      # 获取店铺详情
/adminapi/tbl-store/update/<id>    # 更新店铺信息
/adminapi/tbl-store/audit          # 审核店铺申请
师傅管理相关
/adminapi/technician/technician/pages     # 获取师傅分页列表
/adminapi/technician/technician/<id>      # 更新师傅信息
/adminapi/technician/technician/<id>      # 获取师傅详情
/adminapi/technician/technician/<id>/bind-store  # 修改师傅绑定店铺
博主管理相关
/adminapi/blogger/blogger/pages           # 获取博主分页列表
/adminapi/blogger/blogger/<id>            # 更新博主信息
/adminapi/blogger/blogger/<id>            # 获取博主详情
/adminapi/blogger/blogger/toggle-field    # 切换博主字段状态
菜单管理相关
/adminapi/admin/menus/tree        # 获取菜单树结构
/adminapi/admin/menus/options     # 获取菜单选项
/adminapi/admin/menus/<id>        # 获取菜单信息
/adminapi/admin/menus             # 创建菜单
/adminapi/admin/menus/<id>        # 更新菜单
/adminapi/admin/menus/<id>        # 删除菜单

API URL配置规则

HTTP方法对应
  • GET:查询操作,如获取列表、详情
  • POST:创建操作,如添加用户、商户
  • PUT:更新操作,如修改信息
  • DELETE:删除操作,如删除记录
路径参数
  • 使用<id>表示路径参数
  • /adminapi/user/user/<id>表示用户ID参数
查询参数
  • 查询参数不需要在API URL中体现
  • /adminapi/user/user/pages支持各种查询条件

3. 权限验证机制

验证流程

  1. 超级管理员检查:超级管理员跳过权限验证
  2. API URL检查:检查当前请求的API URL是否在菜单表中
  3. GET请求例外:GET请求且不在菜单表中的API跳过验证
  4. 权限验证:检查管理员是否拥有该API URL的权限

权限验证规则

  • 超级管理员:拥有所有权限,无需验证
  • 普通管理员:需要验证具体权限
  • GET请求:不在菜单表中的GET请求自动通过
  • 其他请求:必须拥有对应API URL权限

4. 角色管理

创建角色

  1. 进入角色管理页面
  2. 点击"添加角色"按钮
  3. 填写角色信息:
    • 角色名称:如"用户管理员"
    • 角色描述:角色职责说明
    • 状态:启用/禁用
  4. 分配权限:选择该角色可以访问的菜单
  5. 点击"保存"

分配权限

  1. 在角色列表中点击"编辑权限"
  2. 选择该角色可以访问的菜单:
    • 勾选目录:可以访问该目录下的所有菜单
    • 勾选菜单:可以访问该菜单页面
    • 勾选按钮:可以执行该按钮对应的操作
  3. 点击"保存权限"

5. 管理员管理

创建管理员

  1. 进入管理员管理页面
  2. 点击"添加管理员"按钮
  3. 填写管理员信息:
    • 用户名:登录用户名
    • 密码:登录密码
    • 昵称:显示名称
    • 角色:选择管理员角色
    • 状态:启用/禁用
  4. 点击"保存"

分配角色

  1. 在管理员列表中点击"编辑"
  2. 修改管理员角色
  3. 点击"保存"

权限配置示例

用户管理权限配置

目录配置

名称:用户管理
类型:目录
图标:user
排序:1

菜单配置

名称:用户列表
类型:菜单
路径:/user/list
组件:UserList
父级:用户管理

按钮配置

名称:查看用户
类型:按钮
API URL:/adminapi/user/user/<id>
父级:用户列表

名称:添加用户
类型:按钮
API URL:/adminapi/user/user
父级:用户列表

名称:编辑用户
类型:按钮
API URL:/adminapi/user/user/<id>
父级:用户列表

名称:用户推广关系
类型:按钮
API URL:/adminapi/user/user/relation/list
父级:用户列表

商户管理权限配置

目录配置

名称:商户管理
类型:目录
图标:shop
排序:2

菜单配置

名称:商户列表
类型:菜单
路径:/merchant/list
组件:MerchantList
父级:商户管理

按钮配置

名称:查看商户
类型:按钮
API URL:/adminapi/merchant/<id>
父级:商户列表

名称:添加商户
类型:按钮
API URL:/adminapi/merchant
父级:商户列表

名称:编辑商户
类型:按钮
API URL:/adminapi/merchant/<id>
父级:商户列表

名称:审核商户
类型:按钮
API URL:/adminapi/merchant/audit/<id>
父级:商户列表

最佳实践

1. 权限设计原则

  • 最小权限原则:只授予必要的权限
  • 职责分离:不同角色承担不同职责
  • 权限细化:按钮级别的权限控制
  • 定期审计:定期检查权限分配

2. 菜单结构设计

  • 层次清晰:目录→菜单→按钮的层次结构
  • 命名规范:使用统一的命名规范
  • 排序合理:按照使用频率排序
  • 图标统一:使用统一的图标风格

3. API URL管理

  • 命名规范:遵循RESTful API规范
  • 路径统一:使用统一的路径格式
  • 参数明确:路径参数使用<id>格式
  • 文档完整:维护完整的API文档

4. 权限验证

  • 及时验证:每次请求都进行权限验证
  • 错误提示:权限不足时给出明确提示
  • 日志记录:记录权限验证结果
  • 异常处理:处理权限验证异常

常见问题

Q1: 如何确定API URL的正确格式?

A: 可以通过以下方式确定:

  • 查看后端路由配置文件
  • 查看API文档
  • 使用浏览器开发者工具查看网络请求
  • 查看控制器方法的@OA\Get等注解

Q2: 为什么按钮权限不生效?

A: 可能的原因:

  • API URL格式不正确
  • 按钮没有正确关联到菜单
  • 角色没有分配该按钮权限
  • 权限缓存没有更新

Q3: 如何批量配置权限?

A: 批量配置方法:

  • 先创建目录结构
  • 再创建菜单
  • 最后批量添加按钮
  • 使用角色模板快速分配权限

Q4: 超级管理员权限如何设置?

A: 超级管理员设置:

  • 在管理员表中设置is_super=1
  • 超级管理员自动拥有所有权限
  • 不需要分配具体角色和权限

Q5: 如何查看当前管理员的权限?

A: 查看权限方法:

  • 在管理员详情页面查看角色
  • 在角色详情页面查看权限
  • 使用权限测试工具验证
  • 查看权限验证日志

Q6: 权限配置后多久生效?

A: 权限生效时间:

  • 菜单权限立即生效
  • 角色权限立即生效
  • 可能需要清除缓存
  • 建议重新登录验证

相关链接

更新日志

版本日期更新内容
1.0.02024-01-15初始版本,包含基础权限管理功能
1.1.02024-02-01新增API URL配置和权限验证机制
1.2.02024-03-01优化权限配置流程和最佳实践

如有疑问,请联系技术支持团队。