【发布时间】:2014-12-18 15:24:22
【问题描述】:
我想使用共享访问签名 SAS 下载 blob。
我还希望能够删除活动的 SAS URI,如果我理解正确,我必须为此使用存储访问策略。
让我感到困惑的是如何删除策略。我还读到您只能激活 5 个存储的访问策略?
我的目标是能够删除活动的 SAS URI。我能想到的唯一方法是删除与 SAS URI 链接的策略,对吗?如果我的 blob 存储中有超过数百个文件,我到底如何才能完成这项工作?我不能为每个 blob 制定一个策略,对吗? 5是最高保单吗?
此代码演示了我如何添加策略以及如何创建使用此策略的 SAS URI,用户可以从中下载。
static void CreateSharedAccessPolicy(CloudBlobContainer container)
{
//Create a new stored access policy and define its constraints.
SharedAccessBlobPolicy sharedPolicy = new SharedAccessBlobPolicy()
{
SharedAccessExpiryTime = DateTime.UtcNow.AddHours(10),
Permissions = SharedAccessBlobPermissions.Read | SharedAccessBlobPermissions.Write | SharedAccessBlobPermissions.List
};
//Get the container's existing permissions.
BlobContainerPermissions permissions = new BlobContainerPermissions();
//Add the new policy to the container's permissions.
permissions.SharedAccessPolicies.Clear();
permissions.SharedAccessPolicies.Add("PolicyName", sharedPolicy);
container.SetPermissions(permissions);
}
static string GetBlobSasUriWithPolicy(CloudBlobContainer container, string policyName)
{
//Get a reference to a blob within the container.
CloudBlockBlob blob = container.GetBlockBlobReference("file_name");
//Generate the shared access signature on the blob.
string sasBlobToken = blob.GetSharedAccessSignature(null, "PolicyName");
//Return the URI string for the container, including the SAS token.
return blob.Uri + sasBlobToken;
}
最后一个问题,如何删除策略?是不是很简单:
permissions.SharedAccessPolicies.Remove("PolicyName");
【问题讨论】: