【问题标题】:Unable to generate 'sas' Token using angular-azure-blob-service无法使用 angular-azure-blob-service 生成“sas”令牌
【发布时间】:2018-12-12 14:37:21
【问题描述】:

 if (fileUpload !== null) {
      const baseUrl = this.blob.generateBlobUrl(Config,'testBlobUpload');
      this.config = {
        baseUrl: baseUrl,
        sasToken: Config.sas,
        blockSize: 1024 * 64, // OPTIONAL, default value is 1024 * 32
        file: fileUpload.nativeFile,
        complete: () => {
          console.log('Transfer completed !');
        },
        error: () => {
          console.log('Error !');
        },
        progress: (percent) => {
          //this.percent = percent;
        }
      };
      this.blob.upload(this.config);
    }
    
    
    export const Config: UploadParams = {
        sas:'?sv=2017-07-29&sr=b&sig=q80fVo0wp8SVmTcgae%2BjceUPfKjE3Eb2MYbkClm8EqQ%3D&st=2018-03-06T13%3A49%3A33Z&se=2018-11-01T13%3A49%3A33Z&sp=racw',
        storageAccount: 'vldevstoragefuncapp.blob.core.windows.net/vl2songs',
        containerName: 'vl2songs'
        //?sv=2017-07-29&sr=b&sig=QXVl6BcV47WiOPbM8CeNhmGpC%2FNslyN7qnI%2BopLuXyg%3D&st=2018-03-06T11%3A46%3A49Z&se=2018-11-01T11%3A46%3A50Z&sp=rw
      }
      

使用 Angular5 使用 angular-azure-blob-service 在 Azure blob 上上传媒体文件,我遇到了生成“sas”令牌的问题,如果有人使用帮助我,谢谢

enter image description here

【问题讨论】:

  • 你能分享你生成 SAS Token 的代码吗?
  • @GauravMantri 我有,分享链接我正在使用npmjs.com/package/angular-azure-blob-service 你会看到,Lib 没有生成“sas”令牌的代码
  • 此库需要 SAS 令牌。您需要在其他地方生成它,然后在您的代码中使用它。
  • 这是否意味着,我需要为此创建一个单独的 API?那么这个Lib需要用那个对吧。
  • 你说的完全正确。

标签: angular azure blob azure-blob-storage


【解决方案1】:

要在 Angular 2+ 中生成 SAS 令牌,您需要安装 - create-hmac

npm i create-hmac

需要插入到index.html

<head>
  ...

  <script>
    var global = global || window;
    var Buffer = Buffer || [];
    var process = process || {
      env: { DEBUG: undefined },
      version: []
    };
  </script>
</head>

生成令牌 -

public generateSasToken(resourceUri: string, signingKey: string, policyName: string, expiresInMins: number) {
    resourceUri = encodeURIComponent(resourceUri);
    let expires = (Date.now() / 1000) + expiresInMins * 60;
    expires = Math.ceil(expires);
    const toSign = resourceUri + '\n' + expires;

    // Use crypto
    const createHmac = require('create-hmac');
    const Buffer = require('buffer').Buffer;
    const hmac = createHmac('sha256', Buffer.from(signingKey, 'base64'));
    hmac.update(toSign);
    const base64UriEncoded = encodeURIComponent(hmac.digest('base64'));

    // Construct authorization string
    let token = 'SharedAccessSignature sr=' + resourceUri + '&sig='
      + base64UriEncoded + '&se=' + expires;
    if (policyName) {
      token += '&skn=' + policyName;
    }
    return token;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-29
    • 2018-08-14
    • 2020-08-07
    • 2019-04-28
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多