firebase - 具有自定义功能错误的 Firestore 规则
问题描述
我正在尝试创建一个规则以允许我的 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;
}
}
}
这是正确的方法吗?提前感谢您的帮助
解决方案
您不查询可访问性规则。您可以定义一个集合,accessLevels
其中每个文档代表您的各种访问类型,例如“admins”、“groupone”、“grouptwo”等。请参阅文档
使用自定义声明和安全规则控制访问
Firebase Admin SDK 支持在用户帐户上定义自定义属性。这提供了在 Firebase 应用中实施各种访问控制策略的能力,包括基于角色的访问控制。这些自定义属性可以为用户提供不同级别的访问权限(角色),这些权限在应用程序的安全规则中强制执行。
可以为以下常见情况定义用户角色:
- 授予用户访问数据和资源的管理权限。
- 定义用户所属的不同组。
- 提供多级访问:
- 区分付费/未付费用户。
- 将版主与普通用户区分开来。
- 教师/学生申请等
- 为用户添加附加标识符。例如,Firebase 用户可以映射到另一个系统中的不同 UID。
推荐阅读
- mariadb - 将 MariaDB 10.1.32 版本升级到 10.3.7
- html - 如何以角度水平调整 div 列的大小?
- android - FusedLocationProviderClient 没有轴承数据
- c# - 带有虚拟纯接口的 SWIG c#
- firebase - 无法检查用户是否已通过身份验证或未对本机 + firebase 做出反应
- ios - 有没有人在 WKWebview 上实现了自动填充联系人?
- python-3.x - 遇到的错误:分类指标无法处理多类多输出和二进制目标的混合
- linux - Linux (SLES) 机器上没有 krb5.keytab 文件
- json - 将嵌套的 JSON 对象上传到 Solr
- jquery - 表单#states上的Drupal jQuery错误