• 数据权限规则`

    数据权限的目的是为了控制用户的可访问数据的功能。 数据权限提供在系统使用过程中,能够实时、动态、灵活的调整用户、角色或者其他维度的可访问数据。 数据权限基于表来进行权限控制,可以添加其他更细的条件来控制权限控制范围,例如可以通过服务、租户等条件来做过滤。 数据权限功能主要分为两个模块,一个是权限控制范围,一个是权限控制规则,在中切换两个功能。

    数据权限规则列表

    列表字段:

    创建权限规则

    操作步骤系统管理 > 数据权限规则,点击按钮,输入完成信息,点击确定按钮,创建权限规则完成。

    必输字段:

    非必输字段:

    编辑权限规则

    操作步骤系统管理 > 数据权限规则,在权限规则行操作列上点击编辑按钮,进入修改屏蔽规则界面,输入完成信息后点击确定按钮,编辑完成。

    不可修改字段:

    必输字段:

    非必输字段:

    删除权限规则

    操作步骤:进入系统管理 > 数据权限规则

    1. 在权限规则行操作列上点击删除按钮
    2. 在提示中确认删除权限归规则

    权限范围列表

    操作步骤:进入系统管理 > 数据权限规则界面,点击权限范围tab页

    字段说明:

    创建权限范围

    操作步骤:进入系统管理 > 数据权限规则界面,点击权限范围tab页, 点击按钮,输入完成信息,点击确定按钮,创建权限范围完成。

    必输字段:

    非必输字段:

    编辑权限范围

    操作步骤:进入系统管理 > 数据权限规则界面,点击权限范围tab页, 在权限范围行操作列上点击编辑按钮编辑权限范围

    点击添加权限规则,实现数据权限应用

    删除权限规则

    操作步骤:进入系统管理 > 数据权限规则界面,点击权限范围tab页

    1. 在权限范围行操作列上点击删除按钮
    2. 在提示中确认删除权限归范围

    数据权限应用

    定义好数据权限规则和范围之后,在权限范围编辑页面可以将权限规则和权限范围进行关联。

    数据权限处理过程主要分为表前缀和SQL,例如现在有一个屏蔽范围拦截hpfm_tenant这张表,然后规则类型是表前缀,例如hzero-platform,那么SQL的转换为:

    -- 原Sql
    SELECT * FROM hpfm_tenant
    
    -- 执行SQL
    SELECT * FROM hzero_platform.hpfm_tenant
    

    如果规则类型是SQL,例如tenant_num like 'HZERO%',那么SQL的转换为:

    -- 原Sql
    SELECT * FROM hpfm_tenant
    
    -- 执行SQL
    SELECT * FROM (SELECT * FROM hpfm_tenant WHERE tenant_num like 'HZERO%') T
    

    数据权限规则的SQL中支持参数替换,支持的参数主要分为一下几种:

    参数格式 描述 示例
    #{上下文参数} 当前SQL执行时传入 MyBatis Mapper 的参数 xxx_id = #{xxxId}
    #{当前用户信息} 当前DetailsHelper.getUserDetails()返回对象内的参数 role_id = #{roleId}
    #{tableAlias} 拦截表的表别名 #{tableAlias}.column1
    #{roleMergeIds} 如果开启角色合并,返回合并角色列表,如果没有开启,返回当前角色,多个以逗号分隔 role_id in (#{roleMergeIds})
    #{additionInfo.KEY} 如果当前用户使用的数据层级配置,则获取对应KEY的值 company_id = #{additionInfo.COMPANY}

    数据权限常见问题