单页面嵌入

嵌入报表 #

与单点登录类似, 单点登录用于直接登录到平台访问报表 但对于只嵌入报表, 用此方法更合适(需升级到5.3.11以上)

嵌入的url: '/echart/?type={reportName}&visitor={visitor}&token={token}&stamp={stamp}'
参数说明:
reportName: 报表名或报表ID
visitor: 用户名(在smartchart平台中管理)
stamp: 时间戳(1970年1月1日到生成时间的毫秒数)
token: 采用sha1加密, token=SHA1(链接秘钥+stamp+visitor+reportName)

用户名和秘钥设定参考 数据服务API的config文件

同时你需要将visitor加入到对应的报表权限查看访问

python样列 #

以下为python版的url生成样列,你可以转化成你对应的开发语言

import time
import hashlib
import os

SMART_CHART_URL = 'http://127.0.0.1:8000'
reportID = '报表ID'
LOGIN_URL = SMART_CHART_URL + '/echart/?type={reportID}&visitor={visitor}&token={token}&stamp={stamp}'
TOKEN = 链接秘钥


def get_smarturl(username, reportName):
    stamp = int(time.time() * 1000)
    visitor = username
    res = TOKEN + str(stamp) + visitor + reportID
    token = hashlib.sha1(res.encode('utf-8')).hexdigest()
    VISIT_DICT = {
        "visitor": id,
        "stamp": stamp,
        "token": token,
        "reportID": reportName
    }

    # 拼接好的url,直接访问
    visit_url = LOGIN_URL.format(** VISIT_DICT)
    return visit_url

数据权限加密方法 #

如果你需要对用户进行一些数据权限控制, 可以避免用户越权访问
可以通过传入参数"id", 如/echart/?type=xxx&visitor=xx&token=xx&stamp=xxxxx&id=xxx
后台会把这个id转化为参数名"_id"给对应的查询来进行数据权限控制
加密参数需把id加入, 例如id=john
那么 token=SHA1(链接秘钥+stamp+visitor+reportName+id)

全参数加密方法 #

如果需要将参数也加入认证中, 为保持兼容性, 我们把param这个参数改为params(具体参考参数文档中param的写法)
'/echart/?type={reportName}&visitor={visitor}&token={token}&stamp={stamp}&params=xxxx'
加密参数把params加入, 例如params为 {"a":"1","b":2"}
res = TOKEN + str(stamp) + visitor + reportName + '{"a":"1","b":2"}'