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

如何在Firestore数据库中实现仅内容所有者的CRUD权限?

Firestore权限规则修复方案

你的问题出在创建文档时,resource.data尚未存在,导致规则里的request.auth.uid == resource.data.userid判断失败,触发权限不足错误。因为resource指的是已经存在于数据库中的文档,而创建操作(create)时,目标文档还未生成,无法读取resource.data。

需要针对不同操作类型拆分规则:

  • 创建文档:验证写入的文档中userid等于当前用户UID
  • 读取、更新、删除文档:验证现有文档的userid等于当前用户UID

修改后的规则如下:

rules_version = '2';

service cloud.firestore {
  match /databases/{database}/documents {
    match /notes/{noteId} {
      // 创建文档:已认证且写入的userid匹配当前用户
      allow create: if request.auth != null && request.resource.data.userid == request.auth.uid;
      // 读取、更新、删除:已认证且现有文档userid匹配当前用户
      allow read, update, delete: if request.auth != null && resource.data.userid == request.auth.uid;
    }
  }
}

额外注意事项

  • 确保创建文档时,userid字段确实被正确写入(和Auth返回的UID完全一致,注意大小写、空格等细节)
  • 如果需要批量操作或子集合权限,再根据实际场景调整规则匹配路径(比如保留{document=**})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 12:32:07