完成文件上传后,如何使用 nodejs 撤销 Azure 的共享访问签名(SAS)?

Posted

技术标签:

【中文标题】完成文件上传后,如何使用 nodejs 撤销 Azure 的共享访问签名(SAS)?【英文标题】:How to revoke Azure's Shared Access Signature (SAS) with nodejs, after finished file upload? 【发布时间】:2022-01-07 21:48:08 【问题描述】:

我能够使用

生成 SAS 令牌

import  generateBlobSASQueryParameters  from '@azure/storage-blob';

function generateUploadUrl()
    const startsOn = new Date();
    const expiresOn =  new Date(startsOn.valueOf() + 60 * 60 * 1000);
    const userDelegationKey = await this.blobServiceClient.getUserDelegationKey(startsOn, expiresOn);

    const queryParams = generateBlobSASQueryParameters(    // HERE
        containerName
        permissions: BlobSASPermissions.parse('racwd'),
        startsOn,
        expiresOn,
    , userDelegationKey, this.storageAccount);

    const token = queryParams.toString();
    return `https://$this.storageAccount.blob.core.windows.net/$this.containerName/?$token`;

感谢我能够使用此链接上传文件:

import  ContainerClient  from '@azure/storage-blob';

function uploadFile(localFilePath: string)
    const containerClient = new ContainerClient(generatedUrl);
    const blockBlobClient = containerClient.getBlockBlobClient(blobName);
    await blockBlobClient.uploadFile(localFilePath);

现在,文件上传完成后,我想撤销 SAS 令牌,不允许进一步上传到 blob。 我该怎么做?我找不到任何相关示例/信息。

【问题讨论】:

【参考方案1】:

您不能直接撤销 SAS 令牌。但是您可以撤销用户委托密钥,这将使所有用它签名的令牌无效。

我实际上没有看到 .NET 方法,但您可以使用 REST API、PowerShell 或 CLI 来实现。

【讨论】:

以上是关于完成文件上传后,如何使用 nodejs 撤销 Azure 的共享访问签名(SAS)?的主要内容,如果未能解决你的问题,请参考以下文章

nodejs multer diskstorage在保存到磁盘后删除文件

nodejs上传的文件如何使用

如何在nodejs中的单个服务调用中上传和下载文件?

git如何撤销pull命令。

无法将 ipa 文件上传到 iTunes 商店

如何使用 NodeJs 代理多个文件上传?