反馈已提交

网络繁忙

权限细粒度控制

  • 文档创建者:文档助手1
  • 历史版本:29
  • 最近更新:Carly 于 2024-12-02
  • 1. 概述

    1.1 版本

    报表服务器版本
    功能变更
    11.0
    -
    11.0.31新增参数$fine_role_id,避免角色重命名导致权限配置失效

    1.2 功能简介

    权限细粒度控制是指针对模板内部的小处方面进行权限控制,比如说单元格内容数据,控件、隐藏行列、工具栏,sheet,图表等等。

    不同的角色用户登录系统,希望可操作的内容不一样,比如说工具栏按钮不一样,模板预览时,展示的单元格不一样,填报数据时,对某些控件拥有的编辑权限不一样,查看数据时,看到的数据不一样。

    2. 权限细粒度

    FineReport 对权限细粒度的控制提供了 2 种不同的控制方式,一个是完全可视化的权限编辑,另外一个是根据 FineReport 提供的内置参数设置条件属性来控制权限。

    2.1 权限编辑

    打开设计器,打开需要进行权限控制的模板,点击「模板>进入权限编辑」,进入权限编辑界面。如下图所示:

    打开设计器,点击,即可在角色面板中选择角色,对权限编辑面板中的单元格、控件、工具栏、 sheet 等等内容在权限设置面板设置权限,如下图所示:

    注1:角色面板中的角色列表自动加载数据决策系统中的角色。如果修改了角色名,权限需要重新配置。

    注2:FineReport 暂时只支持对模板工具栏、控件、单元格、悬浮元素、行列和多 sheet 这几个方面进行细粒度权限控制。

    注3:可视化权限编辑的详细示例请参见: 权限细粒度之模板内容控制 

    2.2 参数权限控制

    用户认证后会将报表固定的默认参数$fine_username$fine_role$fine_position$fine_role_id保存在 Session 中。

    同时提供函数GETUSERDEPARTMENTS()GETUSERJOBTITLES()来分别获取部门和职位。

    同一报表环境下,模板中就可以直接以参数的形式获取到对应的值,然后在模板里面进行筛选判断就可以显示不同数据及样式。

    权限细粒度相关的参数和函数如下表所示:

    参数
    说明示例
    $fine_username获取登录系统的用户名

    例如登录用户名为 Anna

    $fine_username=Anna

    $fine_role获取登录系统的角色

    1)若登录用户为超级管理员

    $fine_role=superusers

    2)若登录用户角色为自定义角色(例如:数据架构师)

    $fine_role=数据架构师

    3)若登录用户无角色

    该参数值为空

    4)若登录用户存在多个自定义角色

    $fine_role_id=角色1,角色2

    $fine_role_id获取登录系统的角色ID

    1)若登录用户为超级管理员

    $fine_role_id=super-user-custom-role

    2)若登录用户角色为自定义角色

    (例如:数据架构师,id为7b37b885-190d-4db0-b3d3-bf2d15285447)

    $fine_role_id=7b37b885-190d-4db0-b3d3-bf2d15285447

    3)若登录用户无角色

    该参数值为空

    4)若登录用户存在多个自定义角色

    $fine_role_id=角色1的id,角色2的id

    $fine_position获取部门职位,返回值为一个由部门和职位组成的数组

    1)若登录用户为「人力资源-部长」

    $fine_position={"departments":"人力资源","jobTitle":"部长"}

    2)若登录用户为「人力资源-部长」兼「领导部-部长」

    $fine_position={"departments":"人力资源","jobTitle":"部长"},{"departments":"领导部","jobTitle":"部长"}

    3)若登录用户无部门职位

    该参数值为空

    GETUSERDEPARTMENTS()

    获取部门职位里面的部门

    若部门存在多个层级,返回全部层级

    若存在多个部门,返回全部部门

    1)若登录用户为「人力资源-部长」

    GETUSERDEPARTMENTS()=人力资源

    2)若登录用户为「销售部-华东销售部-组长」

    GETUSERDEPARTMENTS()=销售部,华东销售部

    3)若登录用户为「人力资源-部长」兼「领导部-部长」

    GETUSERDEPARTMENTS()=人力资源,领导部

    4)若登录用户无部门

    该参数值为空

    GETUSERDEPARTMENTS(X)

    获取部门职位里面的第X层部门

    若不存在X层部门,则返回空值

    1)若登录用户为「销售部-华东销售部-华东销售1组-组长」

    GETUSERDEPARTMENTS(3)=华东销售1组

    GETUSERDEPARTMENTS(3,2)=华东销售1组,华东销售部

    2)若登录用户为「销售部-华东销售部-组长」

    GETUSERDEPARTMENTS(3)为空值

    GETUSERDEPARTMENTS(3,2)=华东销售部

    GETUSERJOBTITLES()

    获取部门职位里面的职位

    若存在多个职位,返回全部职位

    1)若登录用户为「人力资源-部长」

    GETUSERJOBTITLES()=部长

    2)若登录用户为「人力资源-部长」兼「领导部-president」

    GETUSERJOBTITLES()=部长,president

    3)若登录用户无职位

    该参数值为空

    注1:$fine_username、$fine_role、$fine_role_id、$fine_position 是 FineReport 默认的参数,所以调用时大小写必须保持一致。

    注2:不支持模拟计算。

    注3:参数权限控制的详细示例请参见:权限细粒度之参数控制

    3. 注意事项

    问题描述:权限细粒度控制时,开启同步数据集的时候,在设计器里进行权限编辑 时已配置角色中出现了内置数据集里的部门「技术支持总调度」和「技术支持一线技术支持」,但同步数据集里的部门中并没有这两个部门,而且有关「技术支持」的角色部门在决策系统的用户页面里搜索不到。

    原因分析:产品内置的 Demo 自带的上报流程用到这两个角色,因此在已配置角色里默认显示了这两个角色,但不影响正常使用。

    解决方案:在 FineReport 设计器中,点击「服务器>服务器配置」,分别在「分页预览设置」,「填报页面设置」,「数据分析设置」界面去掉「使用工具栏」前的对勾。

    具体情况如下所示:

    上述步骤把服务器默认的模板工具栏清空,若想实现单个模板的权限细粒度的工具栏控制。

    用户可打开单个模板,点击菜单栏的「模板>模板Web属性」,设置「为该模板单独设置」,添加模板所需要的工具。具体情况如下所示:

    附件列表


    主题: 数据决策系统
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持