在 Firebase 存储规则中,有没有一种方法来验证用户角色?

5
我正在尝试根据用户角色限制Firebase存储。
Database:
    users
        <uid>
            admin=false
            ... ... ...

我正在尝试在Firebase存储中使用以下类型的规则:

root.child('users').child(auth.uid).child('user').child('admin').val() == true

在添加这个写规则后,我遇到了访问被拒绝的问题。
谢谢。

Firebase Storage 的安全规则不能引用数据库中的数据。请参考 这个答案 或者 这个答案 来实现类似基于角色的安全性。 - Frank van Puffelen
谢谢Frank。这有点hacky,但我想现在只能这样了。 - Ahsan
您可以使用“自定义声明”,您必须在 Firebase 函数之一中设置自定义声明,但它们将传递到 Firebase 存储。 - Ryan Taylor
1个回答

3
正如Frank van Puffelen在他的评论中所指出的那样:
function isAdminUser() {
    return request.auth.uid in {
        "yaddayadddayaddUserIDKey":"User Name1"
    };
}

service firebase.storage {
    match /b/<appName>.appspot.com/o {
        match /{allPaths=**} {
            allow read;
            allow write: if request.auth != null && isAdminUser();
        }
   }
}

1
管理员功能似乎是硬编码值。目前这是唯一的选项吗? - Jay Byford-Rew
很遗憾,目前只有这么多了。 - Ahsan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接