名词解释
cas_token
授权票据,由集成系统生成,用于获取有效的access_token凭证
access_token
数据权限
与用户相关,用于构建千人千面的仪表盘,不同用户看到不同的数据,数据一般都会与用户ID、用户所在组织机构等相关。需要与宿主系统有交互,获取到用户的相关信息。
功能权限
与用户相关,用于限制用户是否有权限看到仪表盘,或者看到仪表盘下某个图表。需要与宿主系统交互,判断用户是否有权限访问。
集成设置
可视化配置图表可通过js插码方式集成在系统界面,但如果需要进行登录及权限验证,则需要可视化集成宿主系统通过接口交互进行验证。
- 集成系统本身登录成功后,需要写入cas_token 到cookie
cookie名称 : fx_cas_token
java代码块
HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder
.currentRequestAttributes()).getResponse();
Cookie cookie = new Cookie("fx_cas_token", cas_token);
cookie.setPath("/");
cookie.setHttpOnly(false);
response.addCookie(cookie);
- 设置获取cas_token 获取 access_token 接口,可查看登录集成
设置通过access_token 获取 用户信息接口,详细查看数据权限集成
登录集成
需要集成系统登录后在cookie中写入 fx_cas_token
-
接口示例
http://localhost:8080/bi/api/yx/token/gettoken?cas_token=xxx
请求方式
请求参数
| 参数名称 | 参数描述 | | —- | —- | | cas_token | 此参数为集成系统生成cas_token,用于获取access_token的授权票据 |
响应参数
JSON格式
{
"access_token":"access_token",//访问票据,必填
"is_token_valid":"1",//验证token有效,必填
}
数据权限集成
接口设置
接口示例
http://localhost:8185/bi/api/yx/token/get_access_token?access_token=xxx
请求方式
GET
请求参数
参数名称 | 参数描述 |
---|---|
access_token | 此参数为集成系统生成,通过cas_token获取,用于获取用户信息凭证 |
响应参数
JSON格式
{
"is_token_valid":"1",//验证token有效,0:无效,1:有效。必填
"SYS_DEP_ID":"depId",//部门id,用户当前登录的部门id
"SYS_EXTEND":{//扩展字段,扩展字段,json格式
},
"SYS_ORG_ID":"orgId",//机构id,用户当前登录的机构id
"SYS_USER_FX_ROLE":"4",//可视化用户权限,集成用户对可视化登录权限', '集成用户登录权限,使用集成用户登录必填。2:管理者,3:编辑者,4:查看者,默认查看者
"SYS_USER_NAME":"宿主账号",//用户名称,用户当前登录名,使用集成系统账号登录必填
"SYS_UUID":"1",//用户id,用户当前登录用户id,使用集成系统账号登录必填
}
设置字段模拟值
用于配置仪表盘时使用的模拟值,仪表盘插码集成宿主系统后,才能获取到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中使用系统变量进行限制;也可通过设置数据权限相关表,在配置图表时,开启对应我的数据的数据权限,设置与权限表的关系后,选择系统推荐的数据权限
数据权限表设置
- 设置用户表、机构表、部门表
机构表支持多层级,需要填写id,pid,path,path分隔符,name(机构名称字段)
树形结构表使用path字段(全路径),查询数据可不用递归查询
example
id | name | pid | path |
---|---|---|---|
1 | 一级 | 1 | |
2 | 二级 | 1 | 1;2 |
3 | 三级 | 2 | 1;2;3 |
4 | 二级1 | 1 | 1;4 |
### 查询当前部门
id = '1';
### 查询当前部门及其所有的子部门
id in (select id from table path like '%;1;%' or path like '1;%' or id = '1')
### 查询当前部门下的一级子部门
id in (select id from table where pid = '1' and id != '1')
### 查询当前部门子部门
id in (select id from talbe where path like '%;1;%' or path like '1;%')
### 查询当前部门及一级子部门
id in (select id from table where pid = '1' or id = '1')
- 设置表字段与token中解析出的系统变量映射
可视化系统需要将用户信息与权限相关表对应,才可根据具体用户进行数据权限限制
- 设置用户相关权限表关联
数据权限使用
前提:开启token验证 权限表设置
- 仪表盘开启token验证,并保存(高级设置-> 访问权限 -> token验证)
- 准备测试用例
新建仪表盘,鼠标滑向上边框,点击屏幕上方的联动关系配置,将系统自带默认连接的DIM_PATIENTS表添加。并选中该数据,开启数据权限。
(联动关系配置 选择)
(未在“权限设置”模块,需先去开启token验证及设置权限表)
(已设置权限表,会提供权限表信息)
- 设置测试数据与权限表的关系
点击添加关联关系(测试数据与权限表关系为:DIM_PATIENTS.DOCTOR = user_table.ID),并保存设置
- 数据展示
鼠标滑到仪表盘上边框,选择仪表盘配置,切换后,添加一个图表,展示数据,以便看数据权限 设置效果。
- 模拟值设置
因为是做模拟,所以需要设置模拟值。以上提供到样例数据是与用户表关联,所以应该设置用户ID的模拟值,以便通过不同账号的用户ID实现数据展示限制。
在数据权限集成模块,选择用户名称 输入模拟值,并点击右下角保存。
- 权限场景选择
再次进入仪表盘,选中图表并进入设置界面。点击权限模块,开启该图表的数据权限功能。
点击数据范围,可展示当前权限设置场景下,能够使用的数据范围场景。(因为设置了用户表及机构表,且机构表有层级关系,所以可以使用图中6种数据范围)
选择数据范围,点击右上角保存按钮后,点击刷新,图标即进行了更新展示。
(当前机构)
(当前机构及一级子机构)
并点击
功能权限集成
功能权限设置
接口示例
http://localhost:8185/bi/api/yx/token/get_access_token?access_token=xxx&authkey=xxx
请求方式
GET
请求参数
参数名称 | 参数描述 |
---|---|
access_token | 此参数为集成系统生成,通过cas_token获取,用于获取用户信息凭证 |
authkey | 仪表盘或图表中设置的功能权限key |
响应参数
JSON格式
{
"has_auth":"1",//功能权限验证,1可访问 0不可访问 ,必填
"is_token_valid":"1",//验证token有效,1有效 0无效,必填
}
功能权限使用
- 仪表盘需要开启token验证,并开启功能权限验证
- 设置仪表盘的功能权限(可选),设置后,图表若不单独设置,相当于使用仪表盘的功能权限
- 设置图表的功能权限
若仪表盘也设置功能权限,则需同时满足仪表盘和图表的权限才可访问