Azure共享访问签名(SAS)

时间:2014-05-18 22:58:02

标签: azure

我今天第一次开始使用SAS而且我很感兴趣但是......我现在的项目真的需要吗?

在我的天蓝网站上,我希望用户能够上传和下载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的重点,但我感觉我完全错了.. 我为什么要使用它?

当用户上传了一个blob时,将列出所属的blob(由该用户上传),并且用户只能选择并下载他们自己的项目,Javascript下载。

同样在这里..为什么我需要SAS?

谢谢!

1 个答案:

答案 0 :(得分:3)

如果您的blob前面有网站或网络服务,那么您不需要使用SAS,因为您可以自己控制用户权限。在大多数情况下我使用SAS无法控制用户权限。

例如,我们需要直接从blob URL显示图像,我需要阻止它们被其他网站加载和显示。因此,我将生成SAS,以便在该页面上显示图像,并在几秒钟内将页面html内容更改为SAS URL。因此,如果其他人希望通过这些SAS URL读取图像,则它们将过期。

另一个例子可能是上传。与您的方案不同,如果您需要有人直接上传到blob,那么您可能需要SAS,因为您不应该为他们提供存储安全密钥。

希望这有点帮助。

相关问题