在为我的azure存储帐户生成共享访问签名(SAS)时,我可以指定队列名称吗?

时间:2017-06-02 16:40:03

标签: azure azure-storage-queues

这是描述如何Constructing a Service SAS的文档。

文档说,你可以指定一个表名,这样sas只能访问那个特定的表。

我可以用队列做同样的事情,所以sas只能访问那个特定的队列吗?

1 个答案:

答案 0 :(得分:0)

  

我可以用队列做同样的事情,所以sas只能访问它   特定队列?

当然可以!看看下面的代码:

    static void GenerateSasForQueue()
    {
        var cred = new StorageCredentials(accountName, accountKey);
        var account = new CloudStorageAccount(cred, true);
        var client = account.CreateCloudQueueClient();
        var queue = client.GetQueueReference("queue-name");
        var sasPolicy = new SharedAccessQueuePolicy()
        {
            SharedAccessStartTime = DateTime.UtcNow.AddMinutes(-15),
            SharedAccessExpiryTime = DateTime.UtcNow.AddHours(2),
            Permissions = SharedAccessQueuePermissions.Add | SharedAccessQueuePermissions.Read |
            SharedAccessQueuePermissions.Update | SharedAccessQueuePermissions.ProcessMessages
        };
        var sasToken = queue.GetSharedAccessSignature(sasPolicy);
        var sasUrl = string.Format("{0}{1}", queue.Uri.AbsoluteUri, sasToken);
    }

此代码将在您的存储帐户中名为queue-name的队列上生成SAS令牌,所有权限自SAS创建之日起2小时内有效。