首页 > 解决方案 > 从 GCS 提供具有访问限制的静态页面

问题描述

我在谷歌云存储上提供一个静态页面。只要它是公开的,它就可以很好地工作。现在我设置了 acl,以便只有一组用户可以读取存储,未经身份验证的用户被重定向到谷歌身份验证。现在的问题是,网站的静态内容,如 javascript 和 css 无法再找到,我在那里得到 404 错误。静态内容也在存储桶中,并且可以与公共 url 一起使用。使用经过身份验证的 url 时,它不再起作用。

我尝试提供访问控制页面是否正确?我猜是这样,因为它可以工作,除了静态内容。那么你有什么想法我在这里想念的吗?

标签: google-cloud-storage

解决方案


您可以使用以下解决方法将用户身份验证添加到基于存储桶的 GCS 静态页面。

首先你需要创建一个名为redirect.html的公共文件,这个文件将是你静态网页的入口点,你需要添加以下内容

<html>
  <head>
    <meta http-equiv="Refresh" content="0; url=https://storage.cloud.google.com/[yourbucketname]/index.html">
  </head>
  Redirecting to your site..

index.html和其他文件必须是私有文件,授予选定用户的读取权限

这背后的神奇之处在于,如果您的浏览器没有任何活动的谷歌账户,您的浏览器会提示您选择谷歌账户。

并且只有具有读者权限(或具有读取权限的其他角色)的用户才能访问您的静态网站。

友情提示,如果您的浏览器有超过 1 个 Google 帐户,这将使用浏览器中的主 Google 帐户,这可能会导致身份验证问题,如果发生这种情况,请使用隐身窗口。

您可以在这篇Medium 文章中找到更多信息

额外步骤

如果您启用了数据访问日志,此解决方法将引发一些身份验证问题,您需要向将使用经过身份验证的站点的用户添加例外

为此,请在 Cloud Console 中导航至IAM & Admin > Audit Logs。浏览列表或过滤器Google Cloud Storage。单击行。

在右侧的信息面板中,在Exempted Users 选项卡上,单击 Add Exempted User。


推荐阅读