Quick BI报表嵌入第三方如何只通过全局参数控制数据权限?

更新时间:

问题描述

Quick BI公有云专业版用户需要将报表嵌入第三方之后,希望不同的用户查看报表只能看到他关心的数据,其他无关数据可以不展示,实现数据权限的控制。但是第三方系统用户和Quick BI用户没有打通,无法通过数据集的行级权限实现数据权限控制。

解决方案

由于第三方系统和Quick BI账号没有打通,只能通过全局参数传递不同的值来筛选不同的数据,从而实现数据权限控制。具体实现步骤如下:

1,在报表编辑页面设置全局参数和对应的图表以及查询控件关联:

image

为了防止用户在第三方系统通过切换查询条件的值来查询其他数据,界面中选项“是否允许拆线呢控件变更输入值”不要勾选。

2,生成ticket的时候,在SDK代码中通过变量给全局参数area动态传递第三方界面传递的值,比如以下代码输入中的值"华东"在SDK代码中用一个变量来替换,这样可以保证每个用户登录进来,通过第三方界面控制传递不同的值进来:

    CreateTicketRequest createTicketRequest = CreateTicketRequest.builder()
.worksId("bd60dcef-61d4-428b-aff9-e3ffdc204cde")
.globalParam("[{\"paramKey\":\"area\",\"joinType\":\"and\",\"conditionList\":[{\"operate\":\"=\",\"value\":\"华东\"}]}]")
// Request-level configuration rewrite, can set Http request parameters, etc.
// .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders()))
.build();

这段代码给全局参数传递值的代码对应的是快捷方式生成ticket界面中给全局参数传递值的操作,只是代码可以动态化:

image

3.最终访问生成的嵌入第三方的报表链接或者在第三方访问报表,就会实现数据权限控制,且查询控件输入框或者下拉列表置灰,无法切换到其他值进行查询:

image

适用于

  • Quick BI专业版