google-cloud-firestore - 设置“允许所有身份验证”后无法访问 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
}
}
}
解决方案
request.auth
检查请求是否来自 Firebase 身份验证中经过身份验证的用户。
Firestore API 密钥仅用于将请求发送到正确的 firebase 项目,但不会生成request.auth != null
.
您需要针对 firebase 身份验证进行身份验证才能获得request.auth != null
. 但是在您的情况下,我相信您不希望用户进行身份验证,因此您需要一些其他安全规则来获取您真正想要检查的内容。
推荐阅读
- java - 我正确使用 CloseableHttpClient 吗?
- android - 通过单击列表视图中的项目也从 Firebase 中删除 Fire base 中的数据
- linux - 使用 SED 替换长字符串 - 但在正则表达式中得到未终止的替换
- jquery - 当我单击特定跨度标记时,如何使用 ajax 从数据属性中获取值(文档单击类 > 跨越此数据值)
- python - 执行“\r”回车时如何删除现有字符串?python3
- typescript - 模板组件启动器中的离子标签组件未呈现
- php - 将一个 php 页面链接到另一个 php 页面
- php - 如何从其他类外部加载类函数
- c++ - C++ 基本类构造函数
- python - 在熊猫中用最大值填充列值