首页 > 解决方案 > 设置“允许所有身份验证”后无法访问 Firestore

问题描述

我正在我的 Chrome 扩展中初始化 FireStore,就像他们在文档中解释的那样:

import { initializeApp } from "firebase/app";
initializeApp({apiKey:'...', ...});

然后我打电话setDoc来存储文件。allow read, write: true当我设置访问规则时,一切都很好。但是当我将其更改为 时allow read, write: if request.auth != null,我的所有 Firestore 请求都开始失败Error adding document: FirebaseError: [code=permission-denied]: Missing or insufficient permissions.

我假设在初始化代码中提供我的 Firestore API 密钥和其他数据会自动使其通过身份验证。但是,Firestore 认为我的请求出于某种原因是匿名的。我该如何解决?

这是我的配置:

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

标签: google-cloud-firestorefirebase-security

解决方案


request.auth检查请求是否来自 Firebase 身份验证中经过身份验证的用户。

Firestore API 密钥仅用于将请求发送到正确的 firebase 项目,但不会生成request.auth != null.

您需要针对 firebase 身份验证进行身份验证才能获得request.auth != null. 但是在您的情况下,我相信您不希望用户进行身份验证,因此您需要一些其他安全规则来获取您真正想要检查的内容。


推荐阅读