Flutter中Firestore写入指定集合'Borrowed books'的权限规则修改问题
解决Firestore写入'Borrowed books'集合的权限拒绝问题
你遇到的PERMISSION_DENIED错误,是因为当前Firestore安全规则阻止了对Borrowed books/books文档的写入操作——默认规则会限制未授权的读写行为。以下是不同场景下的规则修改方案:
一、开发调试阶段(临时开放)
仅用于本地测试,禁止在生产环境使用,规则如下:
rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /Borrowed books/{document=**} { allow read, write: if true; } } }
该规则允许所有用户对Borrowed books集合下的所有文档进行读写,方便快速验证功能逻辑。
二、生产环境安全规则
生产环境必须严格限制权限,避免数据泄露或非法修改,以下是两种常用方案:
1. 仅允许已登录用户读写
确保只有通过Firebase Auth登录的用户才能操作该集合:
rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /Borrowed books/{bookDoc} { allow write: if request.auth != null; allow read: if request.auth != null; } } }
2. 基于业务逻辑的严格校验
如果需要确保只有书籍的出借人能写入对应文档,可校验写入数据中的出借人ID与当前登录用户ID一致(假设你的borrowedBook对象包含lenderId字段,存储出借人的Firebase Auth用户ID):
rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /Borrowed books/{bookDoc} { allow write: if request.auth != null && request.resource.data.lenderId == request.auth.uid; allow read: if request.auth != null; } } }
修改规则的操作步骤
- 打开Firebase控制台,进入目标项目
- 切换到Firestore数据库的「规则」标签页
- 替换现有规则为上述对应规则,点击「发布」完成更新
内容的提问来源于stack exchange,提问作者Evgen
相关产品推荐
相关产品推荐

