aws s3静态网站在登录前隐藏内容

aws s3 static website hide content before login

我考虑开发一个托管在 amazon s3 上的静态网站。我的文件结构类似于

/login.html
/login.js
/hiddenContent/fileA.html
/hiddenContent/fileA.js

该网站本身是用 Angular 1.x 编写的,因此它是一个单页应用程序。 我现在的问题是:登录名应该是public,每个人都可以访问这个页面。但是 /hiddenContent 文件夹中的所有内容都应该只对经过身份验证的用户可见。由于其 angular,所有内容和控制器必须在 bootstrap(加载)时已知。但是,熟悉网络技术的用户可以看到 html 和已经加载(但未填充数据)的 js。但这必须避免。我该如何处理这个问题? html 和控制器 javascript 应在登录后加载。使用服务器没问题,但是 s3 没有任何服务器。

tl;dr:如何在登录后在 SPA 中加载 html/javascript?

您可以通过以下方式在 Amazon S3 静态网站上实施安全措施:

  • 预签名 URL(但这需要应用程序来验证用户并生成预签名 URL),或
  • 通过使用临时 AWS 凭证(可以通过 AWS Secure Token Service 生成,但您同样需要一个应用程序来创建凭证),或者
  • 通过使用永久 AWS 凭证(但您不应使用 IAM 向应用程序用户授予访问权限)

底线:如果您没有逻辑层来检查安全性和生成访问凭证,那么您就无法有选择地保护 Amazon S3 静态网站。