【问题标题】:How to make Parse.File url's private?如何将 Parse.File url 设为私有?
【发布时间】:2020-06-04 05:26:43
【问题描述】:

我有一个小应用程序,它有一个提要部分,用户可以在其中发布带有图像的数据,并且可以将帖子可见性设置为仅公开或关注者。为此,我在 Heroku 上使用 mLab 资源配置 Parse Server,并使用 GCS 适配器(谷歌云存储)来存储图像和文件。我写了Parse Cloud Function,它返回带有图像或文件url的json格式的帖子,然后我在Android App中显示响应。如果帖子附有图片,我将使用Glide 库使用响应中返回的 URL 来显示它。

现在我的问题是,从 Parse Server 返回的图像 url 是 public,因此任何人都可以从任何地方访问它并查看图像。

所以我的问题是,如何将解析文件 url 设为私有,并且只能由经过身份验证的用户访问,并且没有人只能使用 URL 访问图像?

【问题讨论】:

  • 如果我没有理解错,您能否确认您是否担心在 Google Cloud Storage 中将文件设为私有?如果是,请查看此post。在 Google Cloud Storage 中,您可以将存储桶设为私有或仅授予您想要的用户访问权限,这样该存储桶中的所有文件都只能由您授予权限的用户访问,但如果您不想您的存储桶私有,您可以将对象(文件)设为私有,并且只有您提到的用户才能访问该对象。
  • 如果您担心,请告诉我。
  • 感谢@NibrassH,我在 GCS 上的存储桶已经是私有的,因此对象的所有 url 也是私有的(默认统一权限),没有人可以公开点击它,但是当我使用 parse -server-gcs-adapter 并使用 Parse.File 对象提取 url,然后可以从任何地方访问该 url。所以我想在这里确保 Parse.File url 应该是私有的,并且只有经过身份验证的用户才能访问。希望这会清除您的疑虑。
  • 如果我理解正确,您有一个私有存储桶,如果您尝试访问任何文件的对象链接,您将收到拒绝访问响应。但是,如果您尝试使用parse-server-gcs-adapter 中的Parse.File 方法访问该文件,则会加载该文件。所以你关心的是为什么文件被加载,因为它是私有的?
  • 是的,完全正确。现在我希望只有在用户通过身份验证时才使用Parse.File 方法加载它。如果用户未通过身份验证并尝试从外部(从浏览器或任何地方)点击该 url,那么他应该得到拒绝访问响应。

标签: parse-platform google-cloud-storage parse-server parse-cloud-code


【解决方案1】:

根据 parse-server-gcs-adapter github link 。据说您可以使用parse-server 配置或GOOGLE_APPLICATION_CREDENTIALS 进行连接。由于您可以访问这些文件,这意味着您已成功配置上述方法之一(将存储桶设为私有或对象私有)。我可以看到上面的两种配置都可以让您通过身份验证访问存储桶。否则,您将收到拒绝访问错误。

因此,如果您尝试从 Web 或隐身窗口访问任何文件的 URL,并且收到拒绝访问错误响应,但您可以通过 Parse.File 方法这样做,这意味着您的文件确实受到保护来自网络的请求和来自Parse.File 方法的请求通过您设置的配置进行身份验证。

【讨论】:

  • 谢谢@Nibrass。我没有得到这部分这意味着您的文件确实受到网络保护,并且来自 Parse.File 方法的请求已通过您设置的配置进行身份验证。你能详细说明一下吗?
  • 阅读 github 链接,它在下面说您必须提供项目 id、存储桶 id、应用程序 id 等。您还可以设置用于身份验证的 GOOGLE_APPLICATION_CREDENTIALS,这就是为什么使用 Parse-服务器,您可以访问存储桶中的文件,因为您正在对提供先前信息的存储桶进行身份验证。当我说它受到网络保护时,这意味着没有进行身份验证的任何人都无法查看或访问您的文件。
  • 感谢您的解释,但在我的情况下,从Parse.File 获得的 URL 可以从任何地方访问,即使用户未经身份验证并且也可以直接从隐身窗口中点击它。仅当 url 取自 Parse.File 而不是直接取自 Google Cloud Storage 时才会发生这种情况,GCS 的 URL 显示访问被拒绝。所以在这里我希望 Parse.File url 与 GCS 的工作方式相同
  • 对上述评论有任何建议/帮助,请@Nibrass?
  • 我认为为此您需要设置一个私有解析服务器,因为通过云存储您只能私下访问它。
猜你喜欢
  • 1970-01-01
  • 2011-10-23
  • 2019-06-05
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 2021-12-13
  • 2017-06-11
  • 2016-03-23
相关资源
最近更新 更多