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

can i specify a queue name when generate shared access signatures (SAS) for my azure storage account

这里是描述如何 Constructing a Service SAS.

的文档

文档说,你可以指定一个 table 名称,这样 sas 就只能访问那个特定的 table.

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

Can i do the same thing with queue, so the sas can only access that specific queue?

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

    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 小时内有效。