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

Firestore安全规则配置:如何仅允许用户读写自有文档

Firestore多用户文档权限配置方案

问题核心原因

你当前的规则里最顶部的match /{document=**}直接允许所有已登录且邮箱验证的用户读写所有文档,Firestore的规则逻辑是只要有一条匹配的规则允许操作,就会放行,所以后续针对fooCollection的权限限制完全被这条全局规则覆盖,这就是测试结果异常的根本原因。

正确的安全规则配置

service cloud.firestore {
  match /databases/{database}/documents {
    // 默认拒绝所有未明确授权的操作(Firestore默认行为,显式写出更清晰)
    match /{document=**} {
      allow read, write: if false;
    }

    // 针对fooCollection的权限控制
    match /fooCollection/{docId} {
      // 创建文档:必须登录、邮箱验证,且文档user字段与当前用户邮箱一致
      allow create: if isSignedIn() && emailVerified() && request.resource.data.user == request.auth.token.email;
      // 更新/删除:必须是文档所有者,且更新时不能篡改user字段
      allow update, delete: if isSignedIn() && emailVerified() && isOwner() && 
                             (request.resource.data.user == resource.data.user);
      // 读取:仅允许文档所有者访问
      allow read: if isSignedIn() && emailVerified() && isOwner();
    }

    // 第二个结构类似的集合,复制上述规则修改集合名即可
    match /barCollection/{docId} {
      allow create: if isSignedIn() && emailVerified() && request.resource.data.user == request.auth.token.email;
      allow update, delete: if isSignedIn() && emailVerified() && isOwner() && 
                             (request.resource.data.user == resource.data.user);
      allow read: if isSignedIn() && emailVerified() && isOwner();
    }

    // 工具函数
    function isSignedIn() {
        return request.auth != null;
    }

    function emailVerified() {
        return request.auth.token.email_verified;
    }
    
    function isOwner() {
        return request.auth.token.email == resource.data.user;
    }
  }
}

关键细节说明

  • 默认拒绝策略:先全局拒绝所有操作,确保只有你明确配置的集合能被访问,避免权限泄露。
  • 创建权限:强制文档的user字段等于当前用户邮箱,从源头防止用户创建不属于自己的文档。
  • 更新/删除权限:除了验证所有者身份,额外限制user字段不能被修改,避免用户通过更新操作抢占他人文档。
  • 读取权限:Firestore会自动过滤用户无权访问的文档,你不需要再在本地做数据过滤,直接请求集合即可拿到自己有权限的文档。

后续迁移提示

等后续把user字段换成用户ID时,只需要把规则里所有request.auth.token.email替换成request.auth.uid,同时确保文档的user字段存储为用户ID,规则逻辑无需大改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 16:13:24