• 使用 HZERO 数据权限

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

    权限规则列表

    字段说明:

    字段名称 字段描述 必输 可修改
    租户 权限规则所属租户
    规则编码 权限规则的唯一标识
    规则名称 权限规则的名称
    规则类型 可选两种规则,SQL:为查询语句添加条件限制;数据库前缀:为查询语句表添加数据库前缀
    SQL 替换的SQL内容或者数据库前缀
    状态 启用和禁用两种状态,当为禁用时不能使用该权限规则
    描述 权限规则的的描述信息

    创建权限规则

    点击创建权限规则

    编辑权限规则

    在权限规则行操作列上点击编辑按钮编辑权限规则

    删除权限规则

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

    权限范围列表

    字段说明:

    字段名称 字段描述 必输 可修改
    租户 权限范围所属租户
    权限表名 限定范围,确定到具体表
    SQLID Sql的全限定名,默认Mapper查询接口的package.ClassName.methodName
    服务名 仅在指定服务内生效,如果不指定则全局生效
    状态 启用和禁用两种状态。当为禁用时不能使用该权限范围
    自定义规则标识 SQL是否支持自定义SQL拼接,即在代码中自己传入要注入的SQL。默认为否
    描述 权限范围的描述信息

    创建权限范围

    点击创建权限范围

    编辑权限范围

    在权限范围行操作列上点击编辑按钮编辑权限范围

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

    删除权限规则

    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})

    数据权限常见问题