操作步骤

  1. 登录DataV控制台
  2. 单击我的可视化,进入可视化管理页面。
  3. 选择一个可视化应用,单击右上角的发布图标。

  4. 打开发布分享开关,即可通过下图的分享链接公开访问您的可视化应用。

    说明
    如果发布分享开关为开,表示应用已经发布,否则说明应用没有发布。
  5. 在进行发布之前,你可以进行链接设置历史快照功能设置。

链接设置

打开发布分享开关后,会随机生成一个分享链接,此链接每次打开之后都会变更,上一次的分享链接随即失效且不能恢复到历史分享链接。

发布功能提供了三种分享方式:

请选择合适的方式以方便内外部用户进行可视化应用的访问。

密码访问(企业版功能)

  1. 在发布弹窗中,单击设置访问密码页签,并打开页签中的开关。
  2. 输入您的验证密码,密码长度为6位以上,且必须具备以下三个条件。
    • 英文大写字母 A~Z
    • 英文小写字母 a~z
    • 10个基本数字 0~9

    如果密码设置成功,系统会提示设置密码成功。否则密码的输入框会变成红色。

  3. 选择是否开启校验有效期32小时开关。
    • 开启,访问者首次输入密码成功访问大屏后的32小时内,可任意访问该大屏而无需输入密码。32小时后该访问者需再次输入密码。
    • 不开启,访问链接有效性在一分钟之后过期。
当您再次访问链接当中的 URL 时,系统会提示需要输入密码。

Token验证(企业版功能)

如果您希望跟您的权限体系进行集成,您可以通过 Token 验证的方式实现。

  1. 在发布弹窗中,单击设置Token验证页签,并打开页签中的开关。
  2. 选择是否开启校验有效期32小时开关。
    • 开启,访问者首次进行Token验证成功访问大屏后的32小时内,可任意访问该大屏而无需再次进行Token验证。32小时后该访问者需再次进行Token验证。
    • 不开启,访问链接有效性在一分钟之后过期。

开启验证 Token开关后,DataV 会为您生成一个 Token,您需要记录下这个 Token,以备后用。

如果直接打开您所分享的页面,会收到一个Access Denied消息。表示您的访问被拒绝了。

如果想要打开您的页面,需要完成下面几个步骤:
说明
为了防止重放攻击,请确保您的服务器时间为东8区标准时间,DataV 只会提供1分钟的误差,如果时间误差超过1分钟将会验证失败。
  1. 发布大屏,记录大屏编码(url 的最后一段)。
  2. 将编码与当前时间(毫秒)连起来,并用 |(竖线)分隔开。
  3. 使用 token 通过 HMAC-SHA256 base64 对上一步得到的字符串进行加密。
  4. 将时间和加密后的签名分别命名为 _datav_time_datav_signature
  5. 将它们依次放入 urlquerystring 中。

示例如下:

PHP:
<?php
  $token = "kBwoX9rFX9v4zbOT0Gjd_wr65DZ3P_WW";
  $screenID = "03d1b68faeb09671046d1ef43f588c33";
  $time = time()*1000;
  $stringToSign = $screenID.'|'.$time;
  $signature = urlencode(base64_encode(hash_hmac('sha256', $stringToSign, $token, true)));
  $url = "http://local.datav.aliyun.com:9999/share/".$screenID."?_datav_time=".$time."&_datav_signature=".$signature;
?>
<iframe width=100% height=100% src="<?=$url?>"/>
NODE.JS:
const crypto = require('crypto');
var token = "Ev97wOUSAtJusc3Vsd9O2ngr_vfVFH67";
var screenID ="14c5448c00ecde02b065c231d1659f38";
var time = Date.now();
var stringToSign = screenID +'|'+ time;
var signature = crypto.createHmac('sha256', token).update(str).digest().toString('base64');
var url="http://datav.aliyun.com/share/"+ screenID +"?_datav_time="+time+"&_datav_signature="+ encodeURIComponent(signature);
Java:
package com.company;
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 TokenTest {
    public static String getSignedUrl(String screenID, String token){
        Date date = new Date();
        Long time = date.getTime();
        String stringToSign = screenID + "|" + time;
        String signature = HMACSHA256(stringToSign.getBytes(), token.getBytes());
        String url = "http://datav.aliyun.com/share/"+ screenID +"?_datav_time="+time+"&_datav_signature="+ signature;
        return url;
    }
    /**
     *  利用java原生的摘要实现SHA256加密
     * @param str 加密后的报文
     * @return
     */
    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 (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (InvalidKeyException e) {
            e.printStackTrace();
        }
        return null;
    }
    private static String byte2Base64(byte[] bytes){
        return Base64.encodeBase64String(bytes);
    }
    public static void main(String[] args) throws Exception {
        System.out.println(getSignedUrl("screenId", "token"));
    }
}

历史快照(企业版功能)

屏幕的内容会锁定在历史快照创建的那一刻,存档之后屏幕内容的编辑和修改不会同步到历史快照中,可作为稳定预览版本的备份。

历史快照功能在第一次打开的时候,默认读取 实时更新发布模式,如下图所示。链接设置完成之后,刷新分享大屏,会立即生效。

说明
快照目前仅支持切换,不具备回滚的功能。
  1. 单击新建历史快照,系统会将单击时的大屏配置项作为快照存起来。
    • 可在注释列添加注释备忘。
    • 关闭发布分享功能之后,快照的数据会继续保留。
  2. 再次单击新建历史快照,可新增历史快照,系统仅支持三个有效快照。
  3. 单击删除,删除多余快照。
  4. 单击状态列的单选框,可在快照与快照之间,或者快照与实时模式之间切换,如下图所示。

  5. 刷新分享页即可看到您选中的快照版本的大屏内容。