[英]Amazon Web Service (AWS) Private Storage For Authenticated Users
我的项目流程:
我已经使用 Firebase( Authentication
和Storage
)打下了基础。 所以在 Firebase 我制定了这个Storage Rules
rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
match /assets/{userId}/{assetsId} {
allow read;
}
}
}
插图存储:
assets/
|----user01/
| |----user01.jpg
|----user02/
| |----user02.jpg
基本上只有那个 user01 可以看到 user01.jpg 并且只有那个 user02 可以访问看到 user02.jpg 如果他/她登录
问题:
现在,我目前想尝试在 Amazon Web Services (AWS) 上重新制作这个项目。 我目前正在使用AWS Cognito
,据我所知,它等同于Firebase Authentication
& AWS S3 Storage
,据我所知,它等同于Firebase Storage
。
我仍然对如何使用 AWS 进行开发感到困惑,但我认为如果用户登录,我认为我已经管理了如何获取userId
(或者我认为在 AWS Cognito 中的sub
)
我尝试使用https://awspolicygen.s3.amazonaws.com/policygen.html为S3 Bucket Policy
重新创建Firabase Storage Rules
,但没有像只有这个userId
(或我认为在 AWS Cognito 中认为sub
)这样的条件允许阅读他的/她的私人文件。
我是这个 Firebase 的新手,对 AWS 的东西也很陌生。 请指导我通过,非常感谢。
你不应该使用亚马逊S3斗政策,也不应该把S3权限的用户自己。
相反,它应该按如下方式工作:
这样,由应用程序确定访问权限,这在任何引用/链接到私有对象的页面上完成。 生成预签名URL只需要几行代码,并且不需要API回调到Amazon S3。
例如:想象一个照片共享网站。 默认情况下,照片应该是私密的(无访问权限)。 如果用户登录并希望在线查看照片,则生成 HTML 页面的应用程序将使用<img src=...>
标记,但 URL 将是预签名 URL 。 这意味着 Web 浏览器将在页面上显示图像。 同样,如果有图片的下载链接,则 URL 应该是预先签名的 URL。 此外,用户可能会选择与其他用户共享图片。 此类信息将保存在数据库中。 当另一个用户想要查看共享图像时,应用程序会检查数据库,验证权限,然后提供一个预先签名的 URL。 这将“所有权”从路径(存储图像的位置)移到数据库中。
我不是 Firebase 用户,所以我不知道它有什么功能,但以上是在 S3 中管理用户对私有文件的访问的推荐方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.