我已将文件存储在 firebase 云存储中。该文件仅供付费用户下载。
如何设置安全规则以允许付费用户对该文件具有读取权限?
[已更新]
我使用cloud firestore来存储用户集合 每个用户文档包含
- uid
- 电子邮件
- 姓名
- 照片网址
- 提供商
- 状态
- stripeCustomerId
- purchasedProducts <<这是产品名称数组
我可以通过查看购买的产品数组中是否存在该产品来验证付费用户。
但是,在 Firebase 存储的安全规则内,我似乎无法访问其中的资源(用户集合)。或者我错过了什么?
谢谢
最佳答案
无法从 Firebase 存储的安全规则内访问 Cloud Firestore。
这意味着当前实现用例的唯一方法是:
- 在用户的 ID token 中包含必要的信息,作为自定义声明,这也是 available in security rules .
- 在您的安全规则中包含有关用户的必要信息(可能是他们的 UID)
由于第二种方法要求您为每个付费用户更新规则,因此这种方法并不常见。
可以通过 Firebase Admin SDK 设置自定义声明,例如,来自当您将付款信息写入 Cloud Firestore 时触发的 Cloud Function。
设置自定义声明后,最多可能需要一个小时才能在客户端上可用,并从那里开始在安全规则中可用。原因是声明包含在 ID token 中,该 token 每小时仅身份验证刷新一次。如果你想get the updated claims sooner ,您可以在客户端强制刷新用户的个人资料。
关于firebase - 如何限制Firebase存储文件仅适用于付费用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63604031/