【问题标题】:firestore rules with custom functions error具有自定义功能错误的 Firestore 规则
【发布时间】:2018-08-06 22:35:30
【问题描述】:

我正在尝试创建一个规则以允许在我的 firestore 数据库中使用某些功能(我从 3 个月前开始使用 firebase,我在这方面真的很陌生)。主要思想是找到我存储在用户文档中的用户配置文件的_key。然后,使用我之前找到的 id 搜索 user-profiles 文档中允许的所有权限。如果我找到了权限,我就可以访问该功能

service cloud.firestore {
  match /databases/{database}/documents {

    function getPermisos(idPermiso){
    return get(/databases/{database}/documents/user-profiles/$(idPermiso)).data;
    }

    function getUserType(){
    return get(/databases/$(database)/documents/users/$(request.auth.uid)).data.profile._key ;
    }


    match /proyectos/{document=**}{
    allow list,get: if getPermisos(getUserType()).acessList.proyectos==true;
    }


  }
}

这是正确的方法吗?在此先感谢您的帮助

【问题讨论】:

    标签: firebase google-cloud-firestore firebase-security


    【解决方案1】:

    您不会查询可访问性规则。您可以定义accessLevels 的集合,其中每个文档代表您的各种访问类型,例如“admins”、“groupone”、“grouptwo”等。请参阅documentation

    使用自定义声明和安全规则控制访问

    Firebase Admin SDK 支持在用户帐户上定义自定义属性。这 提供实施各种访问控制策略的能力, 包括 Firebase 应用中基于角色的访问控制。这些习俗 属性可以为用户提供不同级别的访问权限(角色),其中 在应用程序的安全规则中强制执行。

    可以为以下常见情况定义用户角色:

    • 授予用户管理权限以访问数据和资源。
    • 定义用户所属的不同组。
    • 提供多级访问:
    • 区分付费/未付费订阅者。
    • 将版主与普通用户区分开来。
    • 教师/学生申请等
    • 为用户添加一个附加标识符。例如,Firebase 用户可以映射到另一个系统中的不同 UID。

    【讨论】:

    • 是的,这是我检查过的。我意识到我不能在另一个函数中使用一个函数。所以我要试试。谢谢
    猜你喜欢
    • 2020-01-14
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    • 1970-01-01
    • 2020-06-07
    • 2020-04-29
    • 1970-01-01
    相关资源
    最近更新 更多