---
weight: 3
type : docs
bookFlatSection : false
---
### 嵌入报表
与单点登录类似, 单点登录用于直接登录到平台访问报表
但对于只嵌入报表, 用此方法更合适(需升级到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文件](https://gitee.com/smartchart/smartchart/wikis/9.%E8%BF%9B%E9%98%B6%E5%BC%80%E5%8F%91PRO/%E6%95%B0%E6%8D%AE%E6%9C%8D%E5%8A%A1API)

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

### python样列
以下为python版的url生成样列，你可以转化成你对应的开发语言
```python
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"}'

```