【发布时间】:2020-02-16 21:00:59
【问题描述】:
我有一个多租户环境中的 iOS 应用程序可以访问的 ASP.NET Core API。每个租户都分配有一个存储容器。
app有几个图片上传点,需要在app中展示,比如客户头像。
我的 blob 不是公开的,因此我需要找到在 API 中返回这些图像以供应用使用的最佳方法。
我在这里想到了一些方法。
1。上传图像时,生成一个不会过期的 SAS 并将其存储在数据库中。我很快意识到这不是正确的方法。如果我重新生成密钥,这些 URL 将变得无效。所以我们可以把这个从列表中划掉。
当租户调用 GET /customers(这些 url 将包含在返回的响应中)时,在容器级别生成一个短期 SAS 并将其与标头一起发送。然后,该应用程序可以在要显示图像时附加 SAS。这就是我的倾向。
让我的 API 下载每个 blob 并在响应中发送 base64。这似乎是沉重且不必要的。
公开我自己的 API 端点,以便为特定的 blob/容器按需生成 SaS,并让应用首先调用它。
我在这里没有考虑过另一种希望更好的方法吗?我认为#2可能是要走的路。
谢谢!
【问题讨论】:
-
我也会选择 #2(或 #4 作为后备选项)。
-
方式2可能是更好的方式。此外,您还可以尝试更改容器访问级别并将访问级别设置为 blob。更多详情请参考docs.microsoft.com/en-us/azure/storage/blobs/…
-
谢谢。我不想设置 blob 访问级别,因为虽然个人资料图片很好,但还有一个驾驶执照图像被存储,这显然更敏感。
-
@Nate,就像 Gaurav Mantri(存储专家)所说,#2 应该是更好的。请发布该问题的答案,这将对遇到相同问题的其他人有所帮助。
标签: azure-storage azure-blob-storage