文档首页 / 报表公开链接

报表公开链接

为已发布的报表生成 access.html 公开链接,配置访问密码与 IP 白名单,说明未配置时的 4703 拒绝、密码 4701/4702 及会话有效期。

概述

公开链接让没有 Sight Report 账号的人通过一个网址查看已发布的报表,不需要登录。链接的形式是:

https://<平台地址>/access.html?reportId=<报表ID>

公开链接只能查看,访问者以「公开访问」的身份获得一个临时会话。报表必须已发布,草稿版本不能公开查看。

公开链接必须配置「访问密码」或「IP 白名单」中的至少一项,两项都为空时,链接打开后提示「该报表未启用公开查看」。

功能入口

报表设计 列表中,每个非目录的报表都有以下入口:

入口 作用
「公开查看」 在新标签页打开公开链接
「复制公开链接」 把公开链接复制到剪贴板
「属性」 打开属性对话框,展开「访问控制(密码 / IP 白名单,可选)」设置访问密码与 IP 白名单

报表尚未发布时,点击「公开查看」或「复制公开链接」会提示「报表尚未发布,公开链接暂不可用」。目录不支持公开查看。

操作步骤

开启公开链接

  1. 在 报表设计 列表中找到目标报表,先确认它已发布。
  2. 点击该报表的「属性」,在对话框中点击「访问控制(密码 / IP 白名单,可选)」展开设置区。
  3. 填写「访问密码」(最多 100 个字符)和「IP 白名单」中的一项或两项,点击「确定」。
  4. 点击「复制公开链接」,把链接发给访问者。

访问者打开链接

  1. 访问者的客户端 IP 在白名单内:直接进入报表,不询问密码。
  2. 否则如果报表设置了访问密码:页面显示「输入访问密码」,输入正确的密码后进入报表。
  3. 密码错误时在输入框下提示「访问密码错误」,可重新输入。

属性/参数说明

属性 说明 取值/默认值
访问密码 访问者需要输入的密码,保存为明文比较,前后空格会被去掉 可选,最长 100 字符,留空表示不启用密码访问
IP 白名单 免密访问的客户端 IP。在名单内的客户端不需要输入密码 可选,留空表示不启用 IP 免密访问

IP 白名单的写法:

  • 界面中每行一个 IP;后端也接受用英文逗号、分号、中文逗号或换行分隔。
  • 只做与客户端 IP 的完全相等比较。不支持 192.168.1.0/24 这样的网段,也不支持通配符。要放行多个地址需逐个列出。
  • 如果平台前面有反向代理,需要保证代理把真实客户端 IP 传给平台,否则识别到的是代理地址。

访问规则

访问密码 IP 白名单 访问者 IP 结果
未设置 未设置 任意 拒绝,4703「该报表未启用公开查看」
未设置 已设置 在名单内 放行
未设置 已设置 不在名单内 拒绝,4703「当前客户端 IP 不在免密范围内」
已设置 任意 在名单内 放行,不询问密码
已设置 任意 不在名单内 需要输入密码:未输入返回 4701,输入错误返回 4702

会话有效期为 8 小时,到期后需要重新访问认证。

接口调用

前端页面通过 POST /api/embed/access/auth 换取会话,第三方也可以直接调用。请求体:

字段 说明 取值/默认值
reportId 报表 ID 必填
password 访问密码 可选,最长 100 字符
BASE=https://your-domain
curl -s -X POST "$BASE/api/embed/access/auth" \
  -H 'Content-Type: application/json' \
  -d '{"reportId":"rpt_sales","password":"123456"}'

成功响应的 data 中 sessionToken 是会话令牌,appId 固定为 public-access,userName 为「公开访问」,expireAt 是毫秒时间戳。之后调用其他 /api/embed/** 接口时带请求头 X-Embed-Session,见嵌入接口清单。

失败时 code 为下表之一:

code 说明 处理方式
4701 该报表需要访问密码 提示访问者输入密码
4702 访问密码错误 提示重新输入
4703 未启用公开查看、IP 不在免密范围、报表尚未发布,或请求了草稿版本 检查报表的访问控制设置与发布状态

与签名嵌入的关系

  • 签名嵌入(embed.html 加 _s)里,如果报表设置了访问密码,浏览器端需要在换取会话的请求里带 password,或由访问者在页面上输入。IP 白名单同样能跳过密码。
  • 两者的区别是:签名嵌入不要求报表配置了公开访问,没有设置密码的报表照常放行。
  • 第三方服务端直接导出、报表列表查询这些无状态调用不检查访问密码。

注意:访问密码是给页面访问者的二次确认,不是授权边界。会话建立后,后续请求只校验会话,不再检查密码。需要严格授权时使用签名免登。

注意:公开链接打开的报表可以沿单元格报表链接、仪表盘「嵌入报表」区块访问到关联报表,关联报表不会再要求输入密码。分享前确认这些关联报表可以对外公开。

相关文档

联系我们

请填写您的信息,我们将在 1 个工作日内与您联系。