2017-06-02 50 views

回答

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令牌。

+0

我試圖該代碼時,它產生一個SAS這樣的: SV = 2015年12月11日&SIG = XGU%2BzyaZtNOAL339OgzOsTMav5ULcxeuI0Q1jrLRxG0%3D&ST = 2017-06-02T17%3A03%3A58Z&SE = 2017-06-02T19%3A18%3A58Z& SP? = raup 在這個sas中,我看不到任何顯示隊列名的地方,如果我用這個sas訪問另一個隊列,會被拒絕嗎? – liuhongbo

+0

只是一個測試,是的,它的工作原理。那麼這是如何工作的?隊列名稱在簽名的一側?我的想法是sas真的是在客戶端創建的,必須在某處指定隊列名稱。 – liuhongbo

+0

'隊列名稱在簽名的一側?' - 這是正確的。計算簽名時,它使用隊列名稱。 –

相關問題