# 应用权限控制

# 概述

本功能用于实现应用模块的权限控制,包括哪些用户可以访问模块、哪些用户可以新增记录、哪些用户可以编辑和删除数据等常见需求。

# 一、核心原理

# 实现步骤

  1. 定义权限资源:在系统管理中创建权限资源,定义所需的权限类型
  2. 关联模块与资源:在模块配置中将模块与权限资源绑定
  3. 设置权限:在权限资源上为不同用户分配权限

# 权限类型

权限 说明
Execute 执行权限,控制能否看到模块
New 新增权限,控制能否新增记录
Edit 编辑权限,控制能否编辑记录
Delete 删除权限,控制能否删除记录

# 二、示例演示:应用权限模块

# 演示路径

  • 访问地址:https://localhost:5001
  • 模块名称:应用权限

# 操作步骤

步骤一:定义权限资源

  1. 访问BPM网站:https://localhost:5001
  2. 切换到系统管理
  3. 进入模块权限
  4. 找到企业应用,点击鼠标右键
  5. 选择新建子资源
  6. 输入资源名称:我的测试模块
  7. 在权限列表中添加权限:
    • 添加Execute权限
    • 添加New权限
    • 添加Edit权限
    • 添加Delete权限
  8. 点击确定保存,并复制资源RSID

步骤二:关联模块与权限资源

  1. 切换到Web项目
  2. 展开目录Apps\Navigator\Samples
  3. 打开ConceptController.cs文件
  4. 找到第86行(应用权限模块配置)
  5. 修改modulePerm中的资源Id

步骤三:设置权限并测试

  1. 使用超级管理员登录,为普通用户授权
  2. 使用普通账号登录验证权限效果

# 业务处理效果

超级管理员(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 效果
未授权 看不到模块
仅查看 能看到模块,无法增删改
可新增 可查看和新增,无法编辑删除
完整权限 可查看、新增、编辑、删除

# 四、配置步骤

# 操作步骤

  1. 创建权限资源:在系统管理 → 模块权限中,新建权限资源
  2. 添加权限类型:为资源添加Execute、New、Edit、Delete等权限
  3. 获取资源ID:保存后复制资源的RSID
  4. 关联模块:在模块配置中添加modulePerm属性,填入资源ID
  5. 设置权限:在权限资源上为不同用户分配权限

# 关键要点

  • 权限资源:必须先定义权限资源,才能进行授权
  • 资源关联:通过modulePerm属性将模块与权限资源绑定
  • 权限类型:Execute控制模块可见性,New/Edit/Delete控制操作权限
  • 权限生效:关联后,权限资源上设置的权限会自动应用到模块

# 五、常见应用场景

场景 权限配置 说明
模块访问控制 Execute 控制哪些用户能看到模块
数据录入权限 New 控制哪些用户可以新增数据
数据修改权限 Edit 控制哪些用户可以编辑数据
数据删除权限 Delete 控制哪些用户可以删除数据
分级授权 组合权限 不同角色分配不同权限组合

# 六、注意事项

  1. 资源ID准确性:确保使用正确的资源RSID
  2. 模块行为设置ModuleDeniedBehavior.Hide表示无权限时隐藏模块
  3. 权限生效时机:授权后需要刷新页面才能生效
  4. 超级管理员:超级管理员无需授权即可看到所有模块
  5. 按钮控制:框架会根据权限自动控制按钮的可用状态

# 七、总结

应用权限控制的实现非常便捷:

  • 三步完成:定义资源 → 关联模块 → 设置权限
  • 可视化配置:权限资源在系统管理中图形化配置
  • 自动控制:框架自动根据权限控制模块可见性和按钮状态
  • 灵活授权:支持按用户或角色分配不同权限组合
  • 即时生效:授权后刷新页面即可生效

实现应用权限功能很方便,只要将模块和权限资源关联就可以了。模块和权限资源关联以后,权限资源上设置的权限就会自动应用到模块上。