c# - Azure Blob 容器,无法生成令牌
问题描述
我正在开发 azure 存储,但我无法创建正确的 SAS 令牌来传递给我的前端 javascript。遵循多个教程和示例,我似乎无法获得 JS 的工作令牌。
我在这里的教程中验证我的令牌,这样我自己的 javascript 就不会妨碍我:https ://dmrelease.blob.core.windows.net/azurestoragejssample/samples/sample-blob.html
我花了几个小时尝试不同的解决方案,但我生成的令牌看起来与 azure 生成的令牌非常相似。我错过了什么?
代码
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference(containerName);
//Set the expiry time and permissions for the container.
//In this case no start time is specified, so the shared access signature becomes valid immediately.
SharedAccessBlobPolicy sasConstraints = new SharedAccessBlobPolicy();
sasConstraints.SharedAccessExpiryTime = DateTimeOffset.UtcNow.AddHours(24);
sasConstraints.Permissions = SharedAccessBlobPermissions.List | SharedAccessBlobPermissions.Write;
//Generate the shared access signature on the container, setting the constraints directly on the signature.
string sasContainerToken = container.GetSharedAccessSignature(sasConstraints);
//Return the URI string for the container, including the SAS token.
return sasContainerToken;
解决方案
关于这个问题,您是否尝试过使用 JS 创建 SAS 令牌。
var azure = require('azure-storage');
var fs = require('fs');
var SasConstants = azure.Constants.AccountSasConstants;
var blobService = azure.createBlobService();
var containerName = 'containername';
var blobName = 'blobname';
var startDate = new Date('');
var expiryDate = new Date(startDate);
expiryDate.setDate(startDate.getDate() + 1);
var sharedAccessPolicy = {
AccessPolicy: {
Permissions: azure.BlobUtilities.SharedAccessPermissions.READ + azure.BlobUtilities.SharedAccessPermissions.ADD + azure.BlobUtilities.SharedAccessPermissions.CREATE+ azure.BlobUtilities.SharedAccessPermissions.WRITE,
Start: startDate,
Expiry: expiryDate
},
};
var token = blobService.generateSharedAccessSignature(containerName, null, sharedAccessPolicy);
推荐阅读
- javascript - 如何检查两个对象的相等性(仅特定的键值)
- ruby-on-rails - 如何使用 rails 6 中的命令删除 searchkick gem 中的索引以用于生产 ENV?
- python - 无法使用 Python 3.10 在 Windows 上安装 flask_sqlalchemy
- java - 是在使用后增量(即结果++、x++、y++)时返回的东西,即使前面没有关键字return
- css - Space-Between 即使在给他们每个 div 之后也不工作
- python - 无法卸载 pip macOS Big Sur 11.2.3
- python - 如何在集群上运行 tensorflow 模型?
- google-chrome - 如何使用 google chrome for JMeter 在网站中查找参数(变量)
- javascript - Moment.Js 显示日期的混乱
- python - FuncAnimation 只返回一帧