firebase - 如何检查用户是否拥有 Firebase Bolt 编译器中的对象

标签 firebase firebase-security firebase-realtime-database

假设我有一个简单的架构,其中包含两个集合用户和帖子。每个帖子对象都有一个键值对(ownerId:userId),用于找出哪些用户拥有该帖子对象。

users/{1,2,3...}
posts/{a,b,c...}/ownerId:userId

我正在尝试编写用户只能读取/写入其用户数据和帖子的规则。

对于用户来说, bolt 规则非常简单:

isUser(uid) = auth != null && auth.uid == uid;
path /users/$uid {
    read() = isUser($uid);
    write() = isUser($uid);
}

我的问题是如何确保帖子集合只能由用户访问。我可以在规则中检查 posts 集合的 ownderId 属性吗?如果是这样,怎么办?如果不是,我该如何构建我的模式来做到这一点?

编辑

我正在尝试像这样保护帖子路径:

path /posts/$pid {
  read() = isUser(this.ownerId);
  write() = isUser(this.ownerId);
}

这是正确的方法吗?

最佳答案

我们可以通过向集合添加所有者 Id 属性,然后检查用户是否经过身份验证来实现此目的。

path /posts/$pid {
  read() = isUser(this.ownerId);
  write() = isUser(this.ownerId);
}

关于firebase - 如何检查用户是否拥有 Firebase Bolt 编译器中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35476829/

相关文章:

c# - 多个索引可供收藏 - 只有一个作品

multithreading - 多线程 Firebase 函数

javascript - 仅当尚未设置该字段时,才在 Firestore 文档中设置该字段的值

javascript - 即使分配了读取规则,Firebase 也会阻止数据获取

Firebase 存储设置速率限制

javascript - 添加具有自动递增的自定义 ID 的子项 - Firebase

android - Firebase 性能监控 React Native 集成

firebase - firebase云功能对数据库负载有影响吗?

swift - 是否可以在 Firebase 中为 child 添加密码?

javascript - Angular 2 ngFor 值(数字)总结