为了账号安全,请及时绑定邮箱和手机立即绑定

S3:文件的唯一链接?

S3:文件的唯一链接?

哔哔one 2023-03-18 17:54:32
我对我的项目有几个问题,因为我已经停止并且不知道如何继续。我创建了一个小型 saas,类似于教育平台。它是关于付费访问视频文件的。编程语言是 TypeScript:React / NestJS / PostgreSQL / Stripe / AWS S3。我现在的逻辑如下 - 如果用户付款,我将记录添加到我的数据库中:user_trainingsid | uuid | user_id | training_id 1 | d-2a |       1 |           1我的简化训练基础结构如下所示:trainingsid | uuid | name | video_file_name_key 1 | d21x |  foo |      videos/boo.mp4文件videos/boo.mp4是我文件的密钥,它在存储桶 aws s3 中。因此,id 为 1 的用户在登录我的应用程序后可以访问培训。现在,我该如何保护这个文件和文件的链接,使用户无法共享它?我知道我可以启用 CORS,这可能会解决我的问题,但我希望此文件的链接是唯一的。如果可能的话?这个文件能以某种方式得到保护吗?我怎样才能得到一个文件的链接?前端用户只有密钥。我可以通过我的服务器链接到该文件,但我不知道该怎么做。
查看完整描述

1 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

存储在 Amazon S3 中的对象默认是私有的

对于您的情况,我建议使用Amazon S3 pre-signed URLs,这些 URLs 是有时间限制的 URLs,可以临时访问私有对象。

流程将是:

  • 用户登录到您的应用程序

  • 用户请求访问课程

  • 您的应用程序检查他们是否有权访问课程

  • 如果是这样,应用程序会生成一个预签名的 URL,该 URL 的有效期为 30 分钟

  • 应用程序返回课程链接,或在页面中使用预签名 URL(例如在标签中<video>

  • 当用户单击链接或在浏览器中打开页面时,浏览器会通过预签名 URL 从 S3 请求对象

  • Amazon S3 将验证预签名 URL 上的签名并确认其在有效期内。如果是,它将对象返回给用户。

  • 如果有效期已过,则返回预签名URLAccess Denied

只需几行代码即可生成预签名 URL,并且不需要调用 AWS。

使用预签名 URL 的好处在于您的应用程序可以完全控制可以访问该对象,但 Amazon S3 负责向用户提供内容。


查看完整回答
反对 回复 2023-03-18
  • 1 回答
  • 0 关注
  • 82 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信