Firebase 云firestore规则-如何通过访问存储中的不同集合来查看用户权限?

Firebase 云firestore规则-如何通过访问存储中的不同集合来查看用户权限?,firebase,google-cloud-firestore,firebase-authentication,firebase-security,Firebase,Google Cloud Firestore,Firebase Authentication,Firebase Security,我有一个云商店。在这个商店里,我收集了所有管理员。任何人都可以读取存储区中的所有数据,但写入应限于管理员。如果有人试图向收藏写信,例如最新消息,我想看看试图向收藏写信的用户是否是管理员。 我想要的想法是这样的: match /latest-news/{news-id} { allow read: if true; allow write: if <my-admin-collection>.map(auth => auth.uid).includes(reque

我有一个云商店。在这个商店里,我收集了所有管理员。任何人都可以读取存储区中的所有数据,但写入应限于管理员。如果有人试图向收藏写信,例如最新消息,我想看看试图向收藏写信的用户是否是管理员。 我想要的想法是这样的:

 match /latest-news/{news-id} {
    allow read: if true;
    allow write: if <my-admin-collection>.map(auth => auth.uid).includes(request.auth.uid);
 }
match/latest news/{news id}{
允许读取:如果为真;
允许写入:if.map(auth=>auth.uid).includes(request.auth.uid);
}

我该怎么做呢?

如果您的管理员集合按其UID存储这些管理员,您可以使用以下方法从规则中检查是否存在此类文档:

if exists(/databases/$(database)/documents/admins/$(request.auth.uid));
如果
/admins
集合中存在具有当前用户UID的文档,则上述操作允许执行


另请参阅上的文档。

如果您的管理员集合按其UID存储这些管理员,您可以使用以下方法从规则中检查是否存在此类文档:

if exists(/databases/$(database)/documents/admins/$(request.auth.uid));
如果
/admins
集合中存在具有当前用户UID的文档,则上述操作允许执行


另请参阅上的文档。

这完全取决于您如何定义角色。 在firebase中,可以通过配置身份验证角色

自定义声明可用于编写安全规则,如

match /latest-news/{news-id} {
   allow write: if request.auth.token.role == 'Admin';
}

上述安全规则只允许用户以“管理员”身份写入集合。

这取决于您如何定义角色。 在firebase中,可以通过配置身份验证角色

自定义声明可用于编写安全规则,如

match /latest-news/{news-id} {
   allow write: if request.auth.token.role == 'Admin';
}

上述安全规则只允许用户以“管理员”身份写入集合。

谢谢!工作起来很有魅力!您知道是否有任何方法可以访问文档中的字段吗?例如,如果文档中的一个值决定了试图写作的用户是否能够这样做?如果您检查文档链接,它的作用就是:它使用文档中的一个字段来确定角色。当我阅读您的回复lol时,已经晚了。谢谢您,弗兰克!非常感谢。工作起来很有魅力!您知道是否有任何方法可以访问文档中的字段吗?例如,如果文档中的一个值决定了试图写作的用户是否能够这样做?如果您检查文档链接,它的作用就是:它使用文档中的一个字段来确定角色。当我阅读您的回复lol时,已经晚了。谢谢您,弗兰克!