授权管理
# 摘要
提示
授权管理也称为数据授权, 是针对每个功能(按钮)进行数据授权的功能
授权管理是配置数据权限的核心模块, 能够解决几乎所有的数据权限问题, 具体功能如下:
- 用户维度数据授权 通过用户维度,对特定的用户进行数据授权
- 用户组维度数据授权 通过用户组维度,对特定的用户组进行数据授权
# 用户维度数据权限
提示
用户组织树展示的是当前登录用户权限范围内的组织树, 点击用户时功能列表展示的是当前选中的用户所拥有的功能列表(用户角色权限)
- 选择组织树中的用户(只能选择用户,组织无法选择), 展示对应的功能列表, 通过点击功能列表进行数据权限配置
- 用户组织树中的用户支持模糊匹配, 通过上方的搜索框进行模糊搜索
# 用户组维度数据权限
提示
用户组展示的是当前登录用户权限范围内的用户组, 点击用户组时功能列表展示的是当前选中的用户组所拥有的功能列表(用户组角色权限)
- 选择用户组树中的用户组, 展示对应的功能列表, 通过点击功能列表进行数据权限配置
- 用户组配置某个功能的数据权限后, 用户组中所有的用户(带组织的用户)将拥有此功能所配置的数据权限
# 功能列表
- 功能列表是菜单下的按钮列表
- 功能列表只能单选进行配置对应的数据权限
- 功能列表展示功能模块信息(菜单按钮树) 模块类型(是菜单还是按钮) 权限范围(表示功能权限范围) 业务权限(表示业务数据权限) 列权限(表示列数据权限范围)信息
- 权限范围包含 全部 指定范围 及 本人, 默认为本人即只能查看自己创建的数据
- 业务权限和列权限如果配置过,此处展示已配置
# 数据权限分类
系统将数据数据权限分为:
- 功能数据权限 针对功能(按钮)进行人员委托授权, 数据权限委托请参考数据权限委托
- 业务数据权限 针对功能解析对应表,进行表格列的条件筛选,即WHERE条件的追加
- 列数据权限 针对查询类功能(UPDATE DELETE无法进行授权), 对列的查询进行授权
# 功能数据权限
注意
功能数据权限是根据配置生成对应权限SQL,追加到原始SQL中,不会对原有数据查询条件进行影响
对功能按钮进行委托授权, 是职位数据授权的进一步细化延伸, 主要包括:
# 权限范围
提示
指定数据权限范围,不会进行公司数据权限过滤(即使只设置自定义,不选择任何人), 自定义可以进行夸分公司设置数据权限
- 本人 只能看到本人创建的数据
- 全部 可以看到所有数据(包括跨公司创建的)
- 指定范围 可以看到所选用户创建的数据 此处需注意 如果勾选某个组织下的所有用户, 会根据组织进行过滤, 即该组织下新加用户, 该权限也能看到此新加用户创建的数据
# 全部数据权限
- 全部数据权限表示不进行任何数据权限的过滤, 所以所有数据都可以看到
- 授权时效, 全部数据权限支持时间段内生效, 精确到日期, 未填写代表所有时间
# 指定权限范围
提示
指定权限范围所展示的组织,是当前用户资源权限范围内的组织, 而不是系统中所有的组织
- 指定权限范围可以根据当前用户权限范围内的组织用户树进行委托授权, 勾选人员表示 当前能看到该用户创建的数据
- 排除用户或组织, 选择指定范围时, 组织用户树右侧支持排除组织或人员功能, 点击后排除的组织或人员会加入到下方的排除列表, 在列表中支持取消排除功能
- 授权时效, 指定范围数据权限支持时间段内生效, 精确到日期, 未填写代表所有时间
# 业务数据权限
警告
为防止SQL注入, 业务数据权限需要用户填写的部分都会过滤掉SQL相关关键字
业务数据权限一种特殊的授权, 是通过配置的方式对业务功能所对应的SQL语句进行拼接操作,一般用来对特定业务进行数据权限控制(例如需要查看特定商品的订单), 因此称为业务数据权限, 具体功能详情如下:
- 授权时效, 业务数据权限支持时间段内生效, 精确到日期, 未填写代表所有时间
- AND / OR条件 支持在功能数据权限的基础上进行 OR 或者 AND条件追加, 默认是AND条件, 例如 某功能除了看到原有功能数据权限委托的数据外,还需要看到特定业务逻辑的数据(如特定商品的订单), 此时需要设置为OR条件
- 表格列表 通过勾选表格列表对勾选的表格列条件进行配置
- 条件追加配置 可以对每个表对应的列进行配置匹配条件
# 表列表
提示
表格列表是根据当前功能的SQL语句解析出查询的表(FROM表), 是ActionConnect对应的tableNameWithAuthInject层级上的表
- 表格列表是系统根据此功能配置的@ActionConnect信息自动解析出来的, 通过tableNameWithAuthInject可以配置解析对应查询层级(例如子查询)
- 勾选表格说明需要对该表格添加业务权限拼接, 会展示表格对应的拼接逻辑, 其中最上方为对应表格式及表重命名配置,下方展示拼接逻辑
# 表格式
提示
别名信息在某些情况下很重要, 尤其是表的自连接时能够区分自连接的表信息
- 表格列表展示的表名格式为
表名[别名]
, - 表名 为对应的FROM表的名称,如果存在数据库表名注解, 则会优先使用数据库表明注解
- [别名]为解析当前功能SQL对应的该表名的别名(as 别名), 未设置时通表名一致
# 表重命名
提示
重命名表明对某些特殊的SQL进行处理,尤其是from子查询(例如 from (select xxx from table) as t )时尤其有效, 此时可以使用表重命名来应用正确的条件拼接配置
- 表重命名默认为空 即与原始的表名一致
- 表重命名需要结合具体的SQL进行使用, 使用不当会导致SQL执行错误
- 为防止SQL注入,表重命名已经进行SQL过滤,因此需要避免SQL相关关键字
# 拼接逻辑
注意
每个表的条件拼接都会由一对左右括号包裹, 条件为OR时注意, 此处暂时不支持添加左右括号, 后续会优化完善, 使用时请注意条件的准确性
拼接是对表对应的列进行条件拼接, 最终追加到SQL的WHERE子句中, 琪结构如下:
- 条件 与前一个条件关系符, 默认为AND连接
- 列信息 列信息为当前表中的列信息, 为保证程序的稳定性, 此列信息需要到 数据列管理 中添加, 具体参考 数据列管理 章节
- 条件信息 对应的条件匹配信息(例如 大于 小于 等于)
- 值信息 条件匹配的值信息 支持列名及字符串常量值, 如果是字符串则需要用单引号括起来, 模糊匹配不需要添加匹配符(格式为%xxx%), 匹配符会自动添加到信息中
- 可通过添加一行 和 删除一行 按钮对拼接条件进行操作
# 列数据权限
注意
列数据权限只针对SELECT查询有效, 对SELECT只有1列时及其他语句会展示不支持此功能
- 列数据权限是对列进行排除的控制,默认情况下会查询SQL对应的所有列, 可通过该功能对某些列进行排除, 达到数据权限的目的
- 表列表 通过勾选表格列表对勾选的表格列数据权限进行配置
# 表列表
提示
表格列表是根据当前功能的SQL语句解析出查询的表(FROM表), 是ActionConnect对应的tableNameWithColumnInject层级上的表
- 表格列表是系统根据此功能配置的@ActionConnect信息自动解析出来的, 通过tableNameWithColumnInject可以配置解析对应查询层级(例如子查询)
- 勾选表格说明需要对该表格进行列权限排除, 会展示表格对应的排除列信息, 其中最上方为对应表格式,下方展示列排除逻辑
# 排除列逻辑
注意
勾选表格后展示的列信息是针对当前功能SQL中SELECT的列信息
- 排除列左侧为当前功能中对应该表格的所有列信息, 上方展示当前列的数量
- 选择左侧的功能列,点击按钮加入到右侧列表, 表示该列不允许显示
- 选择右侧的功能列,点击返回加入到左侧列表, 表示该列允许显示