我有一个GAE应用程序,其中包含用户数据库。
当其中一个用户尝试下载文件myapplication.appspot.com/somefile.jpg
时,我会:
somefile.jpg
somefile.jpg
无法完成。现在我不清楚如何控制somefile.jpg
的访问权限。如何限制下载到此用户范围?
PS:使用Google Storage以外的其他东西不是一种选择(对于那些想过blobstore的人来说)。
答案 0 :(得分:4)
您无需限制每个用户的访问权限,您可以限制每个应用程序(Google App Engine应用程序)的访问权限。
每个应用程序都有一个服务帐户,您可以做的是在存储桶上设置ACL以允许访问应用程序服务帐户。
现在您需要编写一个可以访问Google Storage并将数据返回给用户的处理程序。
答案 1 :(得分:2)
正如Shay所说,每个App Engine应用程序都自动将一个内部帐户与之关联,称为“服务帐户”。通常,服务帐户名称遵循“your-app-id@appspot.gserviceaccount.com”模式,但是,您可以访问App Engine Administration Console,然后点击您的应用名称,然后点击“应用程序设置”链接,此时您应该看到您的服务帐户名称。
找到服务帐户名后,将其添加到APIs console上的“可以编辑”权限的“团队”子页面。这比更新存储区ACL更容易,因为您不必更改任何ACL,但请记住,这适用于项目中的所有存储桶。如果您希望将应用程序限制为只能访问项目拥有的桶的子集,那么您将需要像Shay所建议的那样更新每桶的ACL。