如何生成token

token主要是为了用户在使用集成页面时作登录和权限验证,如果用户想集成我们有数的报告和大屏,必须在有数环境中有一个可使用的账号,生成token的方式有两种:

  • 用户名密码方式token
  • tokenkey方式生成token

我们可以通过第三方工具(postoman、apifox等)来调用有数的接口(/api/dash/util/genToken)来生成token,具体接口实例为:{有数的域名(或ip)}/api/dash/util/genToken。token也分两种:

  • 带权限的token
  • 不带权限的token

下面就以tokenkey的方式来生成带权限的token和不带权限的token

tokenkey的生成

在用户中心可以生成tokenkey

如何生成token - 图1

不带权限的token

通过第三方工具调用接口:

如何生成token - 图2

key:指代的就是在用户中心生成的tokenkey

生成带权限的token

这个token里面需要有报告的查看权限,同时还需要跟随对应的数据权限。

通过第三方工具调用接口:

如何生成token - 图3

代码解释:

{
    "tokenType": "tokenKey",
    "key": "1605579194431f993e8c6d1e40149673e5eb6",
    "resourcePermissions": [
        {
            "projectId": 789,                 //项目id
            "resourceType": "NEW_REPORT",     //资源类型:报告  ("resourceType": "NEW_SCREEN")大屏pro
            "resourceId": 88077,              //报告id
            "permissions": [
                "view"                        //权限资源:查看
            ]
        }
    ],
    **数据权限管控**
    "filterMap": {
        "5909": {                            
            "rule": "or",                    
            "dataFilters": [
                {
                    "filterType": "listFilter",
                    "selectType": "select",
                    "tableName": "bigviz_user",
                    "filter": {
                        "dim": {
                            "field": "nick",
                            "dataType": "String"
                        },
                        "select": [
                            "apiuser77"
                        ]
                    }
                }
            ]
        }
    }
}

上述如果生成的token没有生效的话,尝试在dataFilters中加一个database参数:

{
    "tokenType": "tokenKey",
    "key": "1605579194431f993e8c6d1e40149673e5eb6",
    "resourcePermissions": [
        {
            "projectId": 789,                 //项目id
            "resourceType": "NEW_REPORT",     //资源类型:报告      ("resourceType": "NEW_SCREEN")大屏pro
            "resourceId": 88077,              //报告id
            "permissions": [
                "view"                        //权限资源:查看
            ]
        }
    ],
    **数据权限管控**
    "filterMap": {
        "5909": {                            
            "rule": "or",                    
            "dataFilters": [
                {
                    "filterType": "listFilter",
                    "selectType": "select",
                    "database": "bigviz"
                    "tableName": "bigviz_user",
                    "filter": {
                        "dim": {
                            "field": "nick",
                            "dataType": "String"
                        },
                        "select": [
                            "apiuser77"
                        ]
                    }
                }
            ]
        }
    }
}
数据库名字由数据链接类型决定,如果在建数据模型时需要选择database,这里则需要,否则不需要

调用成功之后也会返回对应的token值:

如何生成token - 图4

token默认失效时间是多少?如果配置永久?

token 失效默认是30天,如果需要永久token,可以在接口上面添加参数expiryTime(单位是秒):

如何生成token - 图5