嵌入报表 #
与单点登录类似, 单点登录用于直接登录到平台访问报表 但对于只嵌入报表, 用此方法更合适(需升级到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}¶ms=xxxx'
加密参数把params加入, 例如params为 {"a":"1","b":2"}
res = TOKEN + str(stamp) + visitor + reportName + '{"a":"1","b":2"}'