Rem*_*emi 13 firebase firebase-security firebase-storage google-cloud-firestore
我们是否可以使用Firestore数据授予或限制对Firebase Cloud Storage上托管的文件的访问权限?
我希望用作Firebase安全规则的例子
allow write: if get(/databases/mydbname/documents/guilds/$(guildID)).data.users[(request.auth.uid)] in ["Admin", "Member"];
Run Code Online (Sandbox Code Playgroud)
Fra*_*len 11
目前无法从其他产品的安全规则中访问不同的Firebase产品.请参阅:有没有办法在firebase存储规则中验证用户角色?
但似乎您正在尝试检查用户的组成员身份.我建议您将其建模为所谓的自定义声明,而不是在数据库中查找该组成员身份.除了(或除此之外)将成员资格写入数据库之外,您还可以使用Firebase管理SDK将声明"用户{uid}是组{guild1}的成员"设置到用户配置文件中:
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.
});
Run Code Online (Sandbox Code Playgroud)
完成后,您可以检查安全规则中的公会成员资格:
allow read: if request.auth.token.guild1 == true;
Run Code Online (Sandbox Code Playgroud)
(我不确定你是否/如何将公会会员资格建模为地图,如果情况确实如此,我会更新这个答案.)
Firebase 最近发布了跨服务安全规则,让您可以在 Firebase 存储的安全规则中访问 Firestore 数据。您只需要在和函数之前使用firestore.前缀,如下所示:get()exist()
allow write: if firestore.get(/databases/(default)/documents/col/docId/).data.field == "value";
Run Code Online (Sandbox Code Playgroud)
Firebase 当前仅支持每个项目 1 个数据库实例,因此名称必须位于(default)路径中。它不是 Firestore 规则中的通配符,所以不是$(database)
| 归档时间: |
|
| 查看次数: |
1943 次 |
| 最近记录: |