跳至主要內容

如何发布文件

2025年1月17日大约 5 分钟

如何发布文件

本文将详细介绍如何发布文件,通过发布功能,将已经开发完成的大屏看板门户PPT统称:文件) 发布到线上环境,并灵活设置访问权限,确保文件的安全性和可用性。

发布

通过分享链接,用户可直接访问相关内容,实现信息共享。

1. 鼠标悬停在文件上,选择 发布。

  1. 打开发布分享开关,点击确定,转发分享链接可以访问文件。

提示

打开发布分享开关后,系统将随机生成一个分享链接。每次重新打开分享开关时,链接都会更新,上一次的链接将自动失效。

访问限制

灵活设置访问限制。开启访问限制,访问链接时需要进行相关验证;关闭访问限制,分享链接无需验证可直接访问。

提示

打开访问限制开关时,登录验证密码验证Token 验证必须选择勾选一项。

登录验证

勾选登录验证,按需选择可访问的用户或用户组。只有授权的用户才可访问分享链接。

  • 未指定时,当前空间下所有用户都允许登录访问。

  • 指定时,仅指定的用户或用户组中的用户允许登录访问。

打开发布分享访问限制开关,勾选登录验证,按需选择访问用户。

密码验证

用户访问分享链接时,通过输入正确的密码访问文件。

打开发布分享访问限制开关,勾选密码验证,在输入框中输入密码,点击确定。

提示

未勾选验证时效选项,每次访问文件时都需要输入密码。

Token 验证

通过 Token 验证的方法将文件访问权限与其他系统进行集成。

  1. Token 验证规则

    ① 打开发布分享开关,复制并记录文件的分享链接地址,打开访问限制开关,勾选Token 验证,记录Token,以备后用。

    ② 将分享链接地址与当前时间(毫秒)连起来,并用|(竖线)分隔开。

    ③ 使用 Token 通过 HMAC-SHA256 base64,对第 2 步得到的字符串进行加密。

    ④ 将时间和加密后的签名分别命名为 timesignature,放置到分享链接地址后面进行文件访问。

    ⑤ 验证失败,拒绝访问。

提示

默认 time 值与服务器时间的误差不超过 ±2 分钟,超过该误差限制后,生成的文件访问地址将失效。误差值可通过 config/application-prod.yml 文件中的hetu.platform.release.max-time-difference进行设置,单位为毫秒。

Token 验证操作的示例代码

import java.security.*;
import java.util.Date;
import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;

import org.apache.commons.codec.binary.Base64;

import java.net.URLEncoder;

public class Test {

  public static String getSignedUrl(String releaseCode, String token) {
    Date date = new Date();
    Long time = date.getTime();
    String args = releaseCode + "|" + time;
    String signature = hmacSHA256(args.getBytes(), token.getBytes());
    //TODO 访问地址根据实际进行修改
    String url = "https://hetu.taiji.com.cn/share/index.html#/"
      + releaseCode + "?time=" + time + "&signature=" + signature;
    return url;
  }

  public static String hmacSHA256(byte[] data, byte[] key) {
    try {
      SecretKeySpec signingKey = new SecretKeySpec(key, "HmacSHA256");
      Mac mac = Mac.getInstance("HmacSHA256");
      mac.init(signingKey);
      return URLEncoder.encode(byte2Base64(mac.doFinal(data)));
    } catch (Exception e) {
      throw new RuntimeException(e);
    }
  }

  private static String byte2Base64(byte[] bytes) {
    return Base64.encodeBase64String(bytes);
  }

  public static void main(String[] args) throws Exception {
    String token = "OZPNpJCvuQYkhYZ%2fwx0iHw%3d%3d";
    System.out.println(getSignedUrl("TJ22558219572b438586be4d0f6d640e", token));
  }
}

Token 验证的分享链接结果示例

https://hetu.taiji.com.cn/share/index.html#/TJ22558219572b438586be4d0f6d640e?time=1627791920059&signature=r4dBdgUswGOn2d2%2BJY5%2B7EoWYCQ9MNJjTLpGnndyEms%3D
  1. 验证参数校验规则

    勾选Token 验证后,方可选择验证参数,验证参数可以对链接中的自定义参数进行验证。

    保证文件的 URL 访问链接的参数不能被篡改,从而提高文件数据以及用户信息的安全性。

    ① 打开发布分享开关,复制并记录文件的分享链接地址。

    ② 将分享链接参数以及当前时间(毫秒)连起来,并用|(竖线)分隔开。

    ③ 使用Token通过HMAC-SHA256 base64,对第 2 步得到的字符串进行加密。

    ④ 将时间和加密后的签名分别命名为timesignature参数放置到分享地址后面进行文件访问。

    ⑤ 如果签名参数验证失败,拒绝访问。

    验证参数示例代码

    public static String getSignedUrl(String releaseCode,String token){
      Date date=new Date();
      Long time=date.getTime();
      String params="userId=1234&b=1";// 请求参数
      String args=releaseCode+"|"+time+"|"+params;
      String signature=hmacSHA256(args.getBytes(),token.getBytes());
    
      //TODO 访问地址前缀根据实际进行修改
      String url="https://hetu.taiji.com.cn/share/index.html#/"
      +releaseCode+"?time="+time+"&signature="+signature+"&"+params;
      return url;
    }

    验证参数的分享链接结果示例

    https://hetu.taiji.com.cn/share/index.html#/TJ22558219572b438586be4d0f6d640e?time=1627791920059&signature=r4dBdgUswGOn2d2%2BJY5%2B7EoWYCQ9MNJjTLpGnndyEms%3D&userId=1234&b=1
  2. 节点编程生成分享链接(可选)

大屏文件也可以使用节点编程来生成 Token 验证的分享链接。

操作步骤如下

  1. 进入大屏,点击节点编程。

  2. 拖入节点类型全局节点和转换器,将全局节点的页面加载完成后转换器进行连接。

  1. 点击转换器,在右侧编辑节点编程代码。

    Code: 分享链接的Code

    Token: 勾选Token验证后的Token

    请求参数: userID=1234 ;b=1。参数自定义。

    访问地址

提示

参数验证的前置条件必须开启 Token 验证。当密码验证通过之后再进行Token 验证密码验证Token 验证可同时使用。

验证时效

  • 勾选验证时效:可以设置安全验证的有效期。

    • 设置 0 天,每次访问需要进行安全验证。

    • 设置(1,180)天,安全验证通过后,在设置时间内访问文件不需要验证,超过时间需要重新验证。

  • 未勾选验证时效:每次访问需要进行安全验证。

  • 时间规则: 例如:发布时间 2021-08-01,验证时效设置为 3天,则验证的有效期限为: 2021-08-01 00:00:00~2021-08-04 23:59:59

  • 如果开启Token验证验证时效为 Token 值的有效时间

上次编辑于: 2025/2/27 15:06:40
贡献者: caopeiyan,yaodd