---
url: /v6.2/app-public-link.md
---
# 公开链接

选择使用`应用作者`权限或使用`数据集作者`权限"时，可以生成分享链接(使用`使用者`不可以)，系统内用户或非登录用户都可通过共享链接查看应用。

![](/images/app-creation/app-setup-011.png)

> \[!CAUTION] 请注意
> 公开链接不受**应用设置**中的**行权限控制**的限制。即用户不论是否登录，通过公开链接看图，看到的是基于**数据集作者**或\*
> \*应用作者\*\*数据连接权限过滤后的数据，行权限不生效。
> 使用`使用者`权限的模式下，没有启用公开链接按钮。

### 为什么“使用者”权限模式不支持公开链接？

公开链接的设计目标是“拿到链接即可访问”，它面向的是匿名访问者或系统外用户，因此系统不会识别当前访问者是谁。

而`使用者`权限模式依赖“当前登录用户”的身份来决定可见数据范围。也就是说：

* 同一个应用，不同登录用户可能看到完全不同的数据。
* 如果访问者没有登录，系统就无法判断应该套用谁的行权限。
* 因此公开链接只能和`应用作者`或`数据集作者`这类固定权限视角搭配使用，不能和`使用者`模式同时成立。

如果你的目标是“同一个入口，不同用户看到各自有权限的数据”，应优先考虑登录态嵌入、应用内访问控制或参数化嵌入，而不是公开链接。

### 公开链接设置

应用公开链接支持以下设置。

**公开链接二维码**

应用公开链接支持通过二维码分享，点击右侧的二维码进行获取。移动用户可以通过扫码查看应用，使分享更方便、快捷。

**不显示仪表盘标题**

当“不显示仪表盘”勾选后，预览公开链接时则不显示顶部的仪表盘标题（图中红框部分），在仪表盘标题位置右侧的"全屏"、"刷新"、"导出"
的功能按钮也不显示。 同时在应用链接中会生成对应的参数。

![](/images/app-creation/app-setup-012.png)

**不显示翻页器**

当“不显示翻页器”勾选后，预览公开链接时则不显示翻页器（图中红框部分）。同时在应用链接中会生成对应的参数。

![](/images/app-creation/app-setup-013.png)

**需要密码访问**

针对系统外的用户，可以使用公开链接+密码的方式分享仪表盘相关信息，保护数据的安全性。系统默认配置了随机密码，也支持用户自己编辑定义公开链接密码。

### HMAC 签名保护

很多企业对数据是非常敏感的，他不希望数据被随意地查看，所以为了保障共享 URL 过滤的安全性，我们在`应用设置`->`公开链接`中增加了
HMAC 哈希校验功能。

具体操作步骤如下：

1.系统管理员在`设置`->`安全策略`->`数据隐私保护`中启用**HMAC 签名保护**。

只有在`设置`->`安全策略`->`数据隐私保护`中启用**HMAC 签名保护**的情况下用户才可以看到密钥、复制密钥。

![](/images/app-creation/app-setup-014.png)

2.用户在`应用设置`->`公开链接`中启用**公开链接**与**HMAC 签名保护**。

* 启用 HMAC 签名保护时，可以根据需要设置有效期，未设置或设置为0时，没有失效时间。有效期的计算是当前时间前后区间内都有效，比如设置了有效期为60秒，HENGSHI
  服务器时间为2021-01-01 10:10:10，则该公开链接在2021-01-01 10:09:10 和 2021-01-01 10:11:10 之间都有效。

![](/images/app-setup-hmac.png)

3.未登录用户访问公开链接时会提示“参数校验失败”。

![](/images/singin-hmac.png)

4.用户访问公开链接，要想嵌入共享 URL 时必须计算 signature。点击签名标识，在弹框中按示例填写，点击计算得到签名结果。
![](/images/app-setup-hmac-001.png)

5.嵌入共享 URL 的格式为：`shareUrl?having={having}&where={where}&utcSecond={utcSecond}&signature={signature}`。

举例：

* 未登录用户访问如下加了 signature 参数的链接（启用了 HMAC 哈希校验功能），将“北京市”修改为“上海市”后将看不到任何数据，系统提示“参数校验失败”：

`https://develop.hengshi.org/share/app/E5FA041D8/dashboard/1?where=[{"op":"in","kind":"function","args":[{"kind":"field","op":"city","dataset":1},{"kind":"constant","op":["北京市"],"dataset":1}]}]&signature=bf576f3de3259555e2247b64bd341a27a237ef87`

![](/images/sharlUrl-signature-no-modify.png)

![](/images/sharlUrl-signature-modify.png)

> \[!TIP] 提示
> 系统管理员可以重置系统设置里的 HMAC 密钥，与此同时，用户也要更新自己生成“哈希值”逻辑里的密钥(64位 hmacKey)。
