token相关
更新时间: 2022-12-05 19:04:35
1. 概述
token主要是为了用户在使用集成页面时作登录和权限验证,如果用户想集成本产品的报告和大屏,必须在本产品环境中有一个可使用的账号。
2. 生成token接口
基本信息:
属性 | 值 |
---|---|
API | /api/dash/util/genToken |
Method | POST |
请求参数:
- 用户名密码方式生成 token
字段名称 | 参数类型 | 参数说明 |
---|---|---|
tokenType | String | ‘userPassword’ |
String | 账户账号,如果邮箱唯一,就是邮箱,否则是uniqueId | |
password | String | 账户密码 |
- tokenKey 方式生成 token
字段名称 | 参数类型 | 参数说明 |
---|---|---|
tokenType | String | ‘tokenKey’ |
key | String | 使用用户生成的 token key |
- 单点登录方式生成 token
字段名称 | 参数类型 | 参数说明 |
---|---|---|
tokenType | String | ‘custom’ |
uniqueId | String(Optional) | 账户账号,如果不提供,则使用 integrateToken 获取用户身份 |
integrateToken | String | 单点登录鉴权token,需要定制化开发对接 |
- 其余可选参数
字段名称 | 参数类型 | 参数说明 |
---|---|---|
authUniqueId | String(Optional) | 最终需要生成的鉴权帐号,如果不传就是用户名密码对应的用户本身,只有超管可以生成其它账号的鉴权token,别人只能生成自己的鉴权token |
relationWithSystemPermission | String(Optional) | 只有 authUniqueId 配置的情况下且 openRp = true 时才生效,表示 resourcePermissions 字段与 authUniqueId 对应在 BI 系统里的资源权限关系,’or’ 表示取并集,’and’ 表示取交集,’ignore’ 表示忽略 BI 系统中的权限,默认为 ‘or’ |
watermark | String(Optional) | 水印信息,必须提供uniqueId字段 |
filterMap | Object(Optional) | 数据筛选条件(每个数据连接下对应的各个表字段的数据权限) |
pillFieldMap | Object(Optional) | 更改指定pill下的某些字段 |
tableExprMap | Object(Optional) | 更改指定自定义sql的表达式 |
parameterMap | Object(Optional) | 动态更改全局参数和报告参数的值 |
expiryTime | Int(Optional) | token的过期时间(单位为s),默认为86400 * 30(一天) |
resourcePermissions | Arr(Optional) | 设置用户可以访问的资源权限,这个权限与用户当前拥有的角色权限取交集 |
openRp | Bool(Optional) | 默认为false,表示是否开启资源权限过滤,只有等于true的情况下,resourcePermissions才起作用 |
clientSetting | Object(Optional) | 原先在url配置的一些显示参数可以放到token,加强安全性 |
useType | String(Optional) | token的使用场景,主要是用于删除token时,需要传’deleteToken’,而且只有超管才能删除token |
once | Bool(Optional) | 默认false,表示该token是否只允许某一个人访问,第一个人访问后,其它再访问将失效 |
domainId | Number(Optional) | 域ID,企业域用户可指定 |
**5.2 对于 filterMap 的参数结构作了相应修改,支持权限的与或规则,兼容旧的数据结构,旧的数据结构默认是and的关系**
{
"email": "zhangsan@163.com",
"password": "123456",
"authUniqueId": "lisi@163.com",
"watermark": {
"email": "zhangsan@163.com",
"uniqueId": "zhangsan@163.com",
"nick": "张三"
},
"expireTime": 1000,
"pillFieldMap": {
"123": { //数据模型id
"12": { //该数据模型下某个pill的fieldId
"expr": "12" //需要替换的pill的一些属性
}
}
},
"tableExprMap": {
"123": "select * from dev_online.bigviz_user" //自定义sql的id对应的修改内容,id可以去对应的数据连接下的表信息->自定义sql处获取
},
"parameterMap": {
"123": "地区" //key 为参数对应的fieldId, value 为参数的值,fieldId 需要去页面上开发者模式中查看
},
"clientSetting": {
"integrate": { //integrate字段表示是报告集成页面配置
"ignoreSearch": true, //表示是否忽略url中的search部分,默认为false
"mode": "simple" //集成模式
"toolbar": ["export"], //打印,刷新,导出选项等
"side": true, //是否需要侧边栏
"hidePublic": true, //是否展示公共文件夹
"hidePrivate": true, //是否展示私人文件夹
"hideTitle": true, //是否隐藏标题栏
"hideScaleBar": true //是否隐藏tab页面区域缩放栏
"tabColor": "red", // tab页面颜色设置
"hidePageBar": true, //整个报告底部工具栏隐藏
"enableReportDetail": true, //报告详情展示
"hideProgressBar": true, //顶部进度条隐藏
"scale": 50, //缩放配置
"bottomBarPos": "top", //底部栏放在顶部配置
"disableGraphicJump": true, //移动端双击禁止跳转
"fit": true, //集成页面自适应宽度时不留白,默认为false
"defaults": { //设置筛选器的默认值
"列表筛选器控件id":{
"selected": Array,
"exclude": Boolean
},
"日期筛选器控件id":{
"type": "StaticTime",
"minBound": "2016-07-01 00:00:00",
"maxBound": "2016-07-01 00:00:00",
},
}
}
},
"openRp": true, //表示是否开启资源权限过滤(resourcePermissions)
"resourcePermissions": [{
"projectId": 1, //资源所在的项目id
"resourceType": "NEW_REPORT", //资源类型NEW_REPORT(报告),DATA_MODEL(数据模型),DATA_CONNECTION(数据连接),SCREEN(大屏), PUBLISH_SCREEN(发布大屏)
"resourceNamePaths": ["hzzhangdianpeng", "3.10", "未命名报告(1)"], //报告所在的文件夹名字路径,这个参数与resourceId可以2选1(有文件夹概念的资源需要添加文件夹的路径,否则报错)
"isFolder": 0, //是文件夹还是普通资源,默认为0
"permissions": ["view"] //资源对应的权限['view', 'edit', 'export', 'copy']
},{
"projectId": 1,
"resourceType": "NEW_REPORT",
"resourceId": 173, //报告id,这个参数与resourceNamePaths可以2选1,都是为了确定对哪个报告做权限控制
"isFolder": 0,
"permissions": ["view"]
}
"filterMap": {
"123": {
"rule": "or", //5.2版本开始支持传递与或规则,用"or"和"and"表示
"dataFilters": [{
"filterType": "listFilter",
"selectType": "select",
"tableName": "订单总表",
"filter": {
"dim": {
"field": "地区",
"dataType": "String"
},
"select": [
"东北",
"华北"
]
}
},
{
"filterType": "listFilter",
"selectType": "select",
"tableExprId": 3, //自定义sql,数据权限有两种,一种是自定义sql(一定无database),一种是tableName
"filter": {
"dim": {
"field": "地区",
"dataType": "String"
},
"select": [
"东北",
"华北"
]
}
}
}],
"700006204": [
{
"filterType": "listFilter",
"selectType": "select",
"tableName": "订单总表",
"filter": {
"dim": {
"field": "地区",
"dataType": "String"
},
"select": [
"东北",
"华北"
]
}
},
{
"filterType": "listFilter",
"selectType": "select",
"tableExprId": 3, //自定义sql,数据权限有两种,一种是自定义sql(一定无database),一种是tableName
"filter": {
"dim": {
"field": "地区",
"dataType": "String"
},
"select": [
"东北",
"华北"
]
}
},
{
"filterType": "treeFilter",
"selectType": "select",
"tableName": "订单总表",
"filter": {
"or": [
{
"dims": [
{
"field": "地区",
"dataType": "String"
},
{
"field": "省/自治区",
"dataType": "String"
}
],
"cond": {
"inlist": [
[
"东北",
"黑龙江"
],
[
"华北",
"河北"
]
]
}
}
]
}
},
{
"filterType": "treeFilter",
"selectType": "select",
"tableExprId": 3, //自定义sql,数据权限有两种,一种是自定义sql(一定无database),一种是tableName
"filter": {
"or": [
{
"dims": [
{
"field": "地区",
"dataType": "String"
},
{
"field": "省/自治区",
"dataType": "String"
}
],
"cond": {
"inlist": [
[
"东北",
"黑龙江"
],
[
"华北",
"河北"
]
]
}
}
]
}
}
],
"700006205": [
{
"filterType": "listFilter",
"selectType": "unselect",
"database": "bigviz", //数据库名字由数据链接类型决定,如果在建数据模型时需要选择database,这里则需要,否则不需要
"tableName": "订单总表",
"filter": {
"dim": {
"field": "地区",
"dataType": "String"
},
"select": [
"东北",
"华北"
]
}
},
{
"filterType": "treeFilter",
"selectType": "unselect",
"database": "bigviz", //数据库名字由数据链接类型决定,如果在建数据模型时需要选择database,这里则需要,否则不需要
"tableName": "订单总表",
"filter": {
"or": [
{
"dims": [
{
"field": "地区",
"dataType": "String"
},
{
"field": "省/自治区",
"dataType": "String"
}
],
"cond": {
"excludelist": [
[
"东北",
"黑龙江"
],
[
"华北",
"河北"
]
]
}
}
]
}
}
]
}
}
- 单点登录方式生成token
字段名称 | 参数类型 | 参数说明 |
---|---|---|
uniqueId | String | 是单点登录用户系统中唯一标志(email/uid等) |
integrateToken | String | 用于验证用户合法性加密字段,后端服务会调用用户系统作鉴权 |
watermark | String(Optional) | 水印信息 |
filterMap | Object(Optional) | 数据筛选条件(每个数据连接下对应的各个表字段的数据权限) |
expiryTime | Int(Optional) | token的过期时间,默认为86400 * 30(一天) |
pillFieldMap | Object(Optional) | 更改指定pill下的某些字段 |
resourcePermissions | Arr(Optional) | 设置用户可以访问的资源权限,这个权限与用户当前拥有的角色权限取交集 |
clientSetting | Object(Optional) | 原先在url配置的一些显示参数可以放到token,加强安全性 |
{
"uniqueId": "123456",
"integrateToken": "ljasljlkjdsiueiwkjajjsdkjhklajljsk",
"watermark": {
"email": "zhangsan@163.com",
"nick": "张三"
},
"expireTime": 1000,
//这里filterMap生成可以参考用户名密码生成token的方式
"filterMap": {
"700006204": [
{
"filterType": "listFilter",
"selectType": "select",
"tableName": "订单总表",
"filter": {
"dim": {
"field": "地区",
"dataType": "String"
},
"select": [
"东北",
"华北"
]
}
},
{
"filterType": "treeFilter",
"selectType": "select",
"tableName": "订单总表",
"filter": {
"or": [
{
"dims": [
{
"field": "地区",
"dataType": "String"
},
{
"field": "省/自治区",
"dataType": "String"
}
],
"cond": {
"inlist": [
[
"东北",
"黑龙江"
],
[
"华北",
"河北"
]
]
}
}
]
}
}
],
"700006205": [
{
"filterType": "listFilter",
"selectType": "unselect",
"database": "bigviz", //数据库名字由数据链接类型决定,如果在建数据模型时需要选择database,这里则需要,否则不需要
"tableName": "订单总表",
"filter": {
"dim": {
"field": "地区",
"dataType": "String"
},
"select": [
"东北",
"华北"
]
}
},
{
"filterType": "treeFilter",
"selectType": "unselect",
"database": "bigviz", //数据库名字由数据链接类型决定,如果在建数据模型时需要选择database,这里则需要,否则不需要
"tableName": "订单总表",
"filter": {
"or": [
{
"dims": [
{
"field": "地区",
"dataType": "String"
},
{
"field": "省/自治区",
"dataType": "String"
}
],
"cond": {
"excludelist": [
[
"东北",
"黑龙江"
],
[
"华北",
"河北"
]
]
}
}
]
}
}
]
}
}
成功数据返回:
{
"code": 200,
"result": "1503575355359c4fdea8ec1683ed10edd91ae"
}
3. 删除token接口
接口说明:
如果想删除某个token,我们命名为变量t,那么首先需要生成一个专门删除token的token,useType=’deleteToken’,只有超管才能删除token
基本信息:
属性 | 值 |
---|---|
API | /api/dash/util/rmToken |
Method | GET |
请求参数:
字段名称 | 参数类型 | 参数说明 |
---|---|---|
token | String | 用于删除t的鉴权token |
t | String | 待删除的t |
成功数据返回:
{
code: 200,
result: "ok"
}