首页 > 解决方案 > Firestore Firebase 数据库规则,允许管理员编写

问题描述

大家好,我需要帮助以使用户能够阅读所有内容但不能写作。并使管理员能够编写和阅读所有内容。

我有带有文档的用户集合,每个文档都有角色,如果它是管理员帐户,它会说角色 = 'admin' 否则它会说'常规'

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read: if true;
      allow write: if get(/databases/users/documents/users/$(request.auth.uid)).data.role == 'admin';
    }
  }
}

我写了这个,但它没有解决任何问题

- - - - -更新 - - - - -

这对我来说是一个修复,谢谢。

get(/databases/$(database)/documents/users/$(request.auth.uid))

但我仍然无法从客户端做任何事情。我用游乐场模式检查了控制台,规则实际上很好,如果它的管理员 uid 则返回 true。我猜这是客户端问题,因为它可能不读取 uid。知道如何解决吗?

标签: firebasegoogle-cloud-firestorefirebase-authenticationfirebase-security

解决方案


您的规则中有错字:

get(/databases/users/documents/users/$(request.auth.uid))

应该

get(/databases/$(database)/documents/users/$(request.auth.uid))

推荐阅读