You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

修改规则的操作步骤

  1. 打开Firebase控制台,进入目标项目
  2. 切换到Firestore数据库的「规则」标签页
  3. 替换现有规则为上述对应规则,点击「发布」完成更新

内容的提问来源于stack exchange,提问作者Evgen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 09:54:23