【问题标题】:Firebase Firestore security rules seem not applied at allFirebase Firestore 安全规则似乎根本没有应用
【发布时间】:2021-10-06 13:03:58
【问题描述】:

我对 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;
        }
      }
    }

据我了解,这些规则不应允许在我的数据库中的任何集合中进行任何读取或写入。 规则游乐场确切地告诉我,当我尝试运行任何请求时:

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

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

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

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

知道这里可能出了什么问题吗?我错过了什么?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 你的意思是使用firebaseAdmin规则不适用?好点,我不知道 :) 但显然这很有意义......那么我应该如何通过用户身份验证和授权仅对他们的相应文档正确执行我的数据获取?我正在使用next-firebase-auth,所以我在getServerSideProps 中有可用的用户数据和令牌。您可以推荐这里的任何建议/资源吗? :)
    猜你喜欢
    • 2021-04-09
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    • 2020-07-03
    • 2020-09-17
    • 1970-01-01
    • 2020-11-27
    • 1970-01-01
    相关资源
    最近更新 更多