1. 概述

token主要是为了用户在使用集成页面时作登录和权限验证,如果用户想集成本产品的报告和大屏,必须在本产品环境中有一个可使用的账号。

2. 生成token接口

基本信息:

属性
API /api/dash/util/genToken
Method POST

请求参数:

  • 用户名密码方式生成 token
字段名称 参数类型 参数说明
tokenType String 'userPassword'
email 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": {         //该数据模型下某个pillfieldId
              "expr": "12"   //需要替换的pill的一些属性
          }
      }
  },
  "tableExprMap": {
      "123": "select * from dev_online.bigviz_user"       //自定义sqlid对应的修改内容,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可以21(有文件夹概念的资源需要添加文件夹的路径,否则报错)
    "isFolder": 0,  //是文件夹还是普通资源,默认为0
    "permissions": ["view"]  //资源对应的权限['view', 'edit', 'export', 'copy']
  },{
    "projectId": 1,
    "resourceType": "NEW_REPORT",
    "resourceId": 173,  //报告id,这个参数与resourceNamePaths可以21,都是为了确定对哪个报告做权限控制
    "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"
}