Firebase Cloud Storage 规则能否针对 Firestore 数据进行验证?
Posted
技术标签:
【中文标题】Firebase Cloud Storage 规则能否针对 Firestore 数据进行验证?【英文标题】:Can Firebase Cloud Storage rules validate against Firestore data? 【发布时间】:2018-04-02 09:15:21 【问题描述】:我们能否使用 Firestore 数据来授予或限制对托管在 Firebase Cloud Storage 上的文件的访问权限?
我想用作 Firebase 安全规则的示例
allow write: if get(/databases/mydbname/documents/guilds/$(guildID)).data.users[(request.auth.uid)] in ["Admin", "Member"];
【问题讨论】:
【参考方案1】:目前无法从其他产品的安全规则中访问不同的 Firebase 产品。见:is there a way to authenticate user role in firebase storage rules?
但您似乎正在尝试检查用户的组成员身份。我建议您将其建模为所谓的自定义声明,而不是在数据库中查找该组成员。您将 set the claim "user uid is a member of group guild1" into the user profile using the Firebase Admin SDK:
代替(或除此之外)将成员资格写入数据库admin.auth().setCustomUserClaims(uid, guild1: true).then(() =>
// The new custom claims will propagate to the user's ID token the
// next time a new one is issued.
);
完成后,您可以在安全规则中检查公会成员身份:
allow read: if request.auth.token.guild1 == true;
(我不确定您是否/如何将公会成员建模为地图,如果是这种情况,我将更新此答案。)
【讨论】:
有道理。将尝试使用 Cloud Firestore 触发器根据数据库填充自定义声明,并查看是否成功 @frank-van-puffelen 到 2021 年还是这样吗 您无法从安全规则中访问其他产品的事实和解决方法仍然有效。 你也可以做一个cloud storage trigger,如果没有通过firebase验证,它最终会删除上传。 是的,这始终是一个选项@Jonathan。如果您可以详细说明如何做到这一点,它可能是一个很好的替代答案。以上是关于Firebase Cloud Storage 规则能否针对 Firestore 数据进行验证?的主要内容,如果未能解决你的问题,请参考以下文章
Cloud Storage for Firebase 访问错误“admin.storage(...).ref 不是函数”
Google Cloud Storage 上传是不是会触发 Firebase Cloud 功能?
使用 Cloud Functions for Firebase 和 @google-cloud/storage 删除图像时出现问题
“同时”使用 Firebase Storage 和 Cloud Firestore