angular - 刷新 Azure Blob 存储的 SAS token

标签 angular azure azure-blob-storage

我在 Azure Bob 存储中保存了一个视频文件 (mp4)。我通过 SAS token 访问此视频文件。 SAS token 将在 45 秒后过期。假设视频时长为 5 分钟,则显示的视频将仅播放 45 秒并停止。

我想要做的是每 45 秒获得一个新的 SAS token ,并且视频将连续播放而不会停止。如何更改我的代码以便连续显示视频?

注意:我的代码只会播放视频 45 秒,然后停止。我正在使用 Angular。

ngOnInit(): void {
  this.getVideoURL ();
}


  getVideoURL () : Observable <string>
  {
      return this.httpClient.get<string>('https://url.com/getsastoken', { responseType: "json"})
      .pipe(map (
        (data: string) =>
        {
          this.sasTOken = data;
          this.urlOfVideo = 'https://myblob.blob.core.windows.net/app.mp4?'+ this.sasTOken;
        }
      ));
  }

HTML

            <video oncontextmenu="return false;"  id="vid1" class="amp-default-skin" controlsList="nodownload" autoplay controls width="640" height="400" poster="poster.jpg" data-setup='{"nativeControlsForTouch": false}'>
                <source src={{urlOfVideo}} >
            </video>

最佳答案

您无法更改 SAS,而且我怀疑您能否轻松修改代码以频繁更改 URI 上的 SAS token 。

但是:您可以创建存储访问策略(更多信息 here )。在查看存储视频的容器时,您将在门户中找到此选项(访问策略不能在单个 blob 上设置;相反,它们是在特定容器上设置的)。对于视频观看,您应该将其设置为仅具有读取权限。

然后,您可以在策略上设置开始/停止时间(我还没有尝试使用 45 秒的窗口,但我怀疑这会起作用)。设置完成后,您可以根据策略生成 SAS。此时,将 SAS 添加到视频的 URI 将授予最终用户查看/流式传输您的视频内容的能力,直到过期时间。

独立于 SAS,您可以编辑(或删除)SAS 所基于的访问策略。因此...就您的情况而言,您可以定期延长保单的结束日期(从而保持基于 SAS 的 URI 有效)。请注意,任何更改最多需要 30 秒才能生效。另请注意,该策略将应用于给定容器内的所有 blob。

我提到了门户,以便您可以尝试策略/SAS,但这也可以通过 SDK 调用来实现(例如 here 是 .NET SDK 的文档)。

关于angular - 刷新 Azure Blob 存储的 SAS token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68671540/

相关文章:

css - 隐藏正文(html)以 2/4 的 Angular 滚动

azure - 如何以编程方式获取 Azure 存储终结点 URL?

Azure VM 捕获(流程概述)

angular - 将 Angular 7 升级到 8,错误 : this. typeChecker.getTypeArguments 不是构建库上的函数

包含 bool 值的 Angular Material mat-table 过滤器 mat-table 列

angular - 为什么我们需要 `ngDoCheck`

Azure 日志查询显示空值

java - 钻到 Hive 连接错误(org.apache.thrift.transport.TTransportException java.net.SocketException : Broken pipe (Write failed))

azure - 防止 Azure Blob 存储中的热链接