名词解释

cas_token

授权票据,由集成系统生成,用于获取有效的access_token凭证

access_token

访问票据,由集成系统生成,用户获取用户相关信息的凭证

数据权限

与用户相关,用于构建千人千面的仪表盘,不同用户看到不同的数据,数据一般都会与用户ID、用户所在组织机构等相关。需要与宿主系统有交互,获取到用户的相关信息。

功能权限

与用户相关,用于限制用户是否有权限看到仪表盘,或者看到仪表盘下某个图表。需要与宿主系统交互,判断用户是否有权限访问。

集成设置

可视化配置图表可通过js插码方式集成在系统界面,但如果需要进行登录及权限验证,则需要可视化集成宿主系统通过接口交互进行验证。

  1. 集成系统本身登录成功后,需要写入cas_token 到cookie

cookie名称 : fx_cas_token
java代码块

  1. HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder
  2. .currentRequestAttributes()).getResponse();
  3. Cookie cookie = new Cookie("fx_cas_token", cas_token);
  4. cookie.setPath("/");
  5. cookie.setHttpOnly(false);
  6. response.addCookie(cookie);
  1. 设置获取cas_token 获取 access_token 接口,可查看登录集成
  2. 设置通过access_token 获取 用户信息接口,详细查看数据权限集成

    登录集成

    需要集成系统登录后在cookie中写入 fx_cas_token

  3. 设置cas_token 接口

    接口示例

    http://localhost:8080/bi/api/yx/token/gettoken?cas_token=xxx

    请求方式

    GET

    请求参数

    | 参数名称 | 参数描述 | | —- | —- | | cas_token | 此参数为集成系统生成cas_token,用于获取access_token的授权票据 |

响应参数

JSON格式

  1. {
  2. "access_token":"access_token",//访问票据,必填
  3. "is_token_valid":"1",//验证token有效,必填
  4. }

数据权限集成

前提需要设置登录集成

接口设置

接口示例
http://localhost:8185/bi/api/yx/token/get_access_token?access_token=xxx
请求方式
GET
请求参数

参数名称 参数描述
access_token 此参数为集成系统生成,通过cas_token获取,用于获取用户信息凭证

响应参数
JSON格式

  1. {
  2. "is_token_valid":"1",//验证token有效,0:无效,1:有效。必填
  3. "SYS_DEP_ID":"depId",//部门id,用户当前登录的部门id
  4. "SYS_EXTEND":{//扩展字段,扩展字段,json格式
  5. },
  6. "SYS_ORG_ID":"orgId",//机构id,用户当前登录的机构id
  7. "SYS_USER_FX_ROLE":"4",//可视化用户权限,集成用户对可视化登录权限', '集成用户登录权限,使用集成用户登录必填。2:管理者,3:编辑者,4:查看者,默认查看者
  8. "SYS_USER_NAME":"宿主账号",//用户名称,用户当前登录名,使用集成系统账号登录必填
  9. "SYS_UUID":"1",//用户id,用户当前登录用户id,使用集成系统账号登录必填
  10. }

设置字段模拟值

用于配置仪表盘时使用的模拟值,仪表盘插码集成宿主系统后,才能获取到token并获取对应的用户实际信息

设置扩展字段

如上述参数不足满足SQL语句中要使用的系统变量,可在SYS_EXTEND中添加其他字段

系统变量的使用

示例1: 用户ID使用, 需要使用 ‘${}’
select id,name from table where uuid = ‘${SYS_UUID}’
示例2:扩展字段,使用需要 “SYS_EXTEND.扩增字段”
select id,name from table where cid = ‘${SYS_EXTEND.a}’

数据表权限设置

可视化系统中,针对数据权限,可直接在SQL中使用系统变量进行限制;也可通过设置数据权限相关表,在配置图表时,开启对应我的数据的数据权限,设置与权限表的关系后,选择系统推荐的数据权限

数据权限表设置

  1. 设置用户表、机构表、部门表

机构表支持多层级,需要填写id,pid,path,path分隔符,name(机构名称字段)
集成设置 - 图1
树形结构表使用path字段(全路径),查询数据可不用递归查询
example

id name pid path
1 一级 1
2 二级 1 1;2
3 三级 2 1;2;3
4 二级1 1 1;4

截屏2020-07-29 上午10.52.32.png

  1. ### 查询当前部门
  2. id = '1';
  3. ### 查询当前部门及其所有的子部门
  4. id in (select id from table path like '%;1;%' or path like '1;%' or id = '1')
  5. ### 查询当前部门下的一级子部门
  6. id in (select id from table where pid = '1' and id != '1')
  7. ### 查询当前部门子部门
  8. id in (select id from talbe where path like '%;1;%' or path like '1;%')
  9. ### 查询当前部门及一级子部门
  10. id in (select id from table where pid = '1' or id = '1')
  1. 设置表字段与token中解析出的系统变量映射

可视化系统需要将用户信息与权限相关表对应,才可根据具体用户进行数据权限限制

  1. 设置用户相关权限表关联

设置关联关系,有助于系统推荐相关数据权限

数据权限使用

前提:开启token验证 权限表设置

  1. 仪表盘开启token验证,并保存(高级设置-> 访问权限 -> token验证)

集成设置 - 图3
截屏2020-07-30 上午10.56.19.png

  1. 准备测试用例

新建仪表盘,鼠标滑向上边框,点击屏幕上方的联动关系配置,将系统自带默认连接的DIM_PATIENTS表添加。并选中该数据,开启数据权限。
集成设置 - 图5
(联动关系配置 选择)
集成设置 - 图6
(未在“权限设置”模块,需先去开启token验证及设置权限表)
集成设置 - 图7
(已设置权限表,会提供权限表信息)

  1. 设置测试数据与权限表的关系

点击添加关联关系(测试数据与权限表关系为:DIM_PATIENTS.DOCTOR = user_table.ID),并保存设置

  1. 数据展示

鼠标滑到仪表盘上边框,选择仪表盘配置,切换后,添加一个图表,展示数据,以便看数据权限 设置效果。
集成设置 - 图8

  1. 模拟值设置

因为是做模拟,所以需要设置模拟值。以上提供到样例数据是与用户表关联,所以应该设置用户ID的模拟值,以便通过不同账号的用户ID实现数据展示限制。
在数据权限集成模块,选择用户名称 输入模拟值,并点击右下角保存。
集成设置 - 图9

  1. 权限场景选择

再次进入仪表盘,选中图表并进入设置界面。点击权限模块,开启该图表的数据权限功能。
集成设置 - 图10
点击数据范围,可展示当前权限设置场景下,能够使用的数据范围场景。(因为设置了用户表及机构表,且机构表有层级关系,所以可以使用图中6种数据范围)
集成设置 - 图11
选择数据范围,点击右上角保存按钮后,点击刷新,图标即进行了更新展示。
集成设置 - 图12
(当前机构)
集成设置 - 图13
(当前机构及一级子机构)
并点击集成设置 - 图14

功能权限集成

前提需要设置登录集成

功能权限设置

接口示例
http://localhost:8185/bi/api/yx/token/get_access_token?access_token=xxx&authkey=xxx
请求方式
GET
请求参数

参数名称 参数描述
access_token 此参数为集成系统生成,通过cas_token获取,用于获取用户信息凭证
authkey 仪表盘或图表中设置的功能权限key

响应参数
JSON格式

  1. {
  2. "has_auth":"1",//功能权限验证,1可访问 0不可访问 ,必填
  3. "is_token_valid":"1",//验证token有效,1有效 0无效,必填
  4. }

功能权限使用

  1. 仪表盘需要开启token验证,并开启功能权限验证

集成设置 - 图15
截屏2020-07-30 上午10.58.27.png

  1. 设置仪表盘的功能权限(可选),设置后,图表若不单独设置,相当于使用仪表盘的功能权限

截屏2020-07-30 上午10.56.19.png

  1. 设置图表的功能权限

若仪表盘也设置功能权限,则需同时满足仪表盘和图表的权限才可访问
集成设置 - 图18