# 应用权限控制
# 概述
本功能用于实现应用模块的权限控制,包括哪些用户可以访问模块、哪些用户可以新增记录、哪些用户可以编辑和删除数据等常见需求。
# 一、核心原理
# 实现步骤
- 定义权限资源:在系统管理中创建权限资源,定义所需的权限类型
- 关联模块与资源:在模块配置中将模块与权限资源绑定
- 设置权限:在权限资源上为不同用户分配权限
# 权限类型
| 权限 | 说明 |
|---|---|
| Execute | 执行权限,控制能否看到模块 |
| New | 新增权限,控制能否新增记录 |
| Edit | 编辑权限,控制能否编辑记录 |
| Delete | 删除权限,控制能否删除记录 |
# 二、示例演示:应用权限模块
# 演示路径
- 访问地址:https://localhost:5001
- 模块名称:应用权限
# 操作步骤
步骤一:定义权限资源
- 访问BPM网站:https://localhost:5001
- 切换到系统管理
- 进入模块权限
- 找到企业应用,点击鼠标右键
- 选择新建子资源
- 输入资源名称:我的测试模块
- 在权限列表中添加权限:
- 添加Execute权限
- 添加New权限
- 添加Edit权限
- 添加Delete权限
- 点击确定保存,并复制资源RSID
步骤二:关联模块与权限资源
- 切换到Web项目
- 展开目录
Apps\Navigator\Samples - 打开
ConceptController.cs文件 - 找到第86行(应用权限模块配置)
- 修改
modulePerm中的资源Id
步骤三:设置权限并测试
- 使用超级管理员登录,为普通用户授权
- 使用普通账号登录验证权限效果
# 业务处理效果
超级管理员(Administrators):
- 可以看到所有模块
- 无需设置权限即可访问
普通用户(张三):
- 未授权前:看不到应用权限模块
- 授权Execute后:可以看到模块,但新增、编辑、删除按钮不可用
- 授权New后:新增按钮亮起,可以新增数据
- 授权Edit、Delete后:编辑、删除按钮亮起,可以编辑删除数据
# 三、实现方法
# 3.1 定义权限资源
在系统管理 → 模块权限中,创建权限资源:
资源名称: 我的测试模块
资源RSID: 79bf5898-4967-407d-9411-451dbe101551
权限列表:
- Execute # 查看模块权限
- New # 新增数据权限
- Edit # 编辑数据权限
- Delete # 删除数据权限
# 3.2 关联模块与权限资源
文件路径:Web项目\Apps\Navigator\Samples\ConceptController.cs
// 第86行:应用权限模块配置
new {
id = "Sample.应用权限",
// 第86行:关联权限资源
modulePerm = new UserModulePermision("14590571-2216-49a2-bd9f-60de5b450a86", ModuleDeniedBehavior.Hide),
text = "应用权限",
title = "客户名录(模块是否可见、新增、编辑、删除按钮权限)",
glyph = 0xea9c,
xclass = "Apps.samples.CustomersAll"
}
代码说明:
- 第86行:
modulePerm = new UserModulePermision("资源RSID", ModuleDeniedBehavior.Hide)- 将模块与权限资源关联 - 资源RSID:替换为实际创建的权限资源ID
- ModuleDeniedBehavior.Hide:无权限时隐藏模块
# 3.3 设置权限
在系统管理 → 模块权限中,找到创建的权限资源,为不同用户分配权限:
| 用户 | Execute | New | Edit | Delete | 效果 |
|---|---|---|---|---|---|
| 未授权 | ❌ | ❌ | ❌ | ❌ | 看不到模块 |
| 仅查看 | ✅ | ❌ | ❌ | ❌ | 能看到模块,无法增删改 |
| 可新增 | ✅ | ✅ | ❌ | ❌ | 可查看和新增,无法编辑删除 |
| 完整权限 | ✅ | ✅ | ✅ | ✅ | 可查看、新增、编辑、删除 |
# 四、配置步骤
# 操作步骤
- 创建权限资源:在系统管理 → 模块权限中,新建权限资源
- 添加权限类型:为资源添加Execute、New、Edit、Delete等权限
- 获取资源ID:保存后复制资源的RSID
- 关联模块:在模块配置中添加
modulePerm属性,填入资源ID - 设置权限:在权限资源上为不同用户分配权限
# 关键要点
- 权限资源:必须先定义权限资源,才能进行授权
- 资源关联:通过
modulePerm属性将模块与权限资源绑定 - 权限类型:Execute控制模块可见性,New/Edit/Delete控制操作权限
- 权限生效:关联后,权限资源上设置的权限会自动应用到模块
# 五、常见应用场景
| 场景 | 权限配置 | 说明 |
|---|---|---|
| 模块访问控制 | Execute | 控制哪些用户能看到模块 |
| 数据录入权限 | New | 控制哪些用户可以新增数据 |
| 数据修改权限 | Edit | 控制哪些用户可以编辑数据 |
| 数据删除权限 | Delete | 控制哪些用户可以删除数据 |
| 分级授权 | 组合权限 | 不同角色分配不同权限组合 |
# 六、注意事项
- 资源ID准确性:确保使用正确的资源RSID
- 模块行为设置:
ModuleDeniedBehavior.Hide表示无权限时隐藏模块 - 权限生效时机:授权后需要刷新页面才能生效
- 超级管理员:超级管理员无需授权即可看到所有模块
- 按钮控制:框架会根据权限自动控制按钮的可用状态
# 七、总结
应用权限控制的实现非常便捷:
- ✅ 三步完成:定义资源 → 关联模块 → 设置权限
- ✅ 可视化配置:权限资源在系统管理中图形化配置
- ✅ 自动控制:框架自动根据权限控制模块可见性和按钮状态
- ✅ 灵活授权:支持按用户或角色分配不同权限组合
- ✅ 即时生效:授权后刷新页面即可生效
实现应用权限功能很方便,只要将模块和权限资源关联就可以了。模块和权限资源关联以后,权限资源上设置的权限就会自动应用到模块上。
← 只显示用户有权查看的数据 记录操作权限 →