我正在尝试创建一条规则来允许我的firestore数据库中的某些功能(我从3个月前开始使用firebase,在这方面我真的很新)。主要思想是找到我存储在用户文档中的用户配置文件的_key。然后,使用我之前找到的ID搜索用户配置文件文档中允许的所有权限。如果获得许可,则可以访问该功能
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;
}
}
}
这是正确的制作方法吗?预先感谢您的帮助
答案 0 :(得分:0)
您不会查询可访问性规则。您可以定义accessLevels
的集合,其中每个文档代表您的各种访问类型,例如“管理员”,“ groupone”,“ grouptwo”等。请参见documentation
具有自定义声明和安全规则的控制访问权限
Firebase Admin SDK支持在用户帐户上定义自定义属性。这个 提供实施各种访问控制策略的能力, 在Firebase应用中包括基于角色的访问控制。这些习俗 属性可以为用户提供不同级别的访问权限(角色), 是在应用程序的安全规则中强制执行的。
可以为以下常见情况定义用户角色:
- 授予用户访问数据和资源的管理权限。
- 定义用户所属的不同组。
- 提供多级访问:
- 区分付费/未付费订户。
- 区别主持人与普通用户。
- 老师/学生申请表等
- 在用户上添加其他标识符。例如,Firebase用户可以映射到另一个系统中的其他UID。