2014-05-18 61 views
0

我今天第一次開始使用SAS,並且對它感興趣,但是..我真的需要它在我當前的項目中嗎?Azure共享訪問簽名(SAS)

在我的azure網站上,我希望用戶能夠上傳和下載blob。每個用戶都有自己的帳戶。

這是一個簡單的上傳功能:

//Upload blob 
      CloudBlobContainer container = CloudStorageServices.GetCloudBlobsContainer(); 
      CloudBlockBlob blockBlob = container.GetBlockBlobReference(file.FileName + guid); 
      blockBlob.UploadFromStream(file.InputStream); 

      //Get uri from blob 
      var blobUrl = blockBlob.Uri; 

      //Upload table 
      CloudTable table2 = CloudStorageServices.GetCloudUploadsTable(); 
      UploadEntity uploadtable = new UploadEntity(imagename, entity.RowKey + guid, blobUrl.ToString(), User.Identity.Name, file.FileName + guid); 
      TableOperation insertOperation = TableOperation.InsertOrReplace(uploadtable); 
      table2.Execute(insertOperation); 

我真的不看到這裏使用SAS了點,但我已經完全錯誤的感覺IM .. 我爲什麼要使用它?

當用戶上傳了一個blob時,該用戶上傳的所有blob將被列出,用戶將只能選擇和下載他們自己的項目,Javascript下載。

同樣在這裏..爲什麼我需要SAS?

謝謝!

+0

我相信SAS存在委託訪問,並嚴格控制SAS的消費者可以在資源上執行操作。 –

回答

3

如果您在Blob前有網站或Web服務,那麼您不需要使用SAS,因爲您可以自己控制用戶權限。我在大多數情況下使用SAS,無法控制用戶權限。

例如,我們需要直接從blob URL顯示圖像,我需要阻止它們被其他網站加載和顯示。因此,我將爲需要在該頁面上顯示的圖像生成SAS,並在幾秒鐘內將頁面html內容更改爲SAS網址。所以如果其他人想通過這些SAS網址讀取圖片,它們將會過期。

另一個例子可能是上傳。如果您需要某人直接上傳到blob,則與您的方案不同,因此您可能需要使用SAS,因爲您不應爲其提供存儲安全密鑰。

希望這會有所幫助。

+0

很好的解釋謝謝! – Reft

相關問題