Firebase Firestore 安全规则似乎根本没有应用

时间:2021-07-31 07:48:21

标签: firebase google-cloud-firestore next.js firebase-security

我对 Firebase 还很陌生,但要么我完全误解了某些东西,要么我的 Firebase 帐户有问题。

我向 Firebase 应用添加了一个 Firestore 数据库,最初我选择在测试模式下创建它。据我在文档中读到,测试模式与生产模式的不同之处仅在于默认 security rules

我想正确配置我的规则,以便用户只能访问他们自己的数据。

但是,我无法让它工作,所以我尝试将我的 Firestore 安全规则配置为不允许对任何人进行任何读取或写入操作。这是我目前在 Firestore 数据库中设置的 -> 规则:

rules_version = '2';
    service cloud.firestore {
      match /databases/{database}/documents {
        match /{document=**} {
          allow read, write: if false;
        }
      }
    }

据我所知,这些规则不应允许在我的数据库中的任何集合中进行任何读取或写入。 规则操场告诉我当我尝试运行任何请求时:

access denied in firestore rules playground

但是,从我的 NextJS 应用程序中,我仍然可以获取如下数据:

import {
    getFirebaseAdmin
} from 'next-firebase-auth';
// ...
const categoriesDocument = await getFirebaseAdmin()
        .firestore()
        .collection('categories')
        .doc('D47pV7TxNpDNYNkHgfU0')
        .get();

一切正常。我还确定数据正是从这个 Firestore 数据库中获取的,因为当我更改某些文档时,它会反映在获取的数据中。

我还注意到,在 Firebase 的 Firestore 数据库 -> 规则 -> 监控规则中,我根本看不到任何结果(总允许数:0,总拒绝数:0,总错误数:0)。

知道这里有什么问题吗?我错过了什么?

1 个答案:

答案 0 :(得分:1)

在服务器上,您以管理员身份使用 firestore。规则在那里不适用。