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

如何限制用户保存超过10条文档?能否通过Rules实现?

限制用户最多保存10条文档的实现方案

方案1的问题分析

  • 前端提前统计用户已有文档数量再限制写入的方式完全不可靠,因为客户端可以被篡改(比如伪造API响应、直接调用Firebase API绕过前端校验),无法真正限制用户的写入行为。

方案2:用Firebase Security Rules实现可靠限制

这是最安全的方案,因为规则运行在Firebase服务器端,客户端无法绕过。具体规则代码如下:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    // 限制DataCollection的写入操作
    match /DataCollection/{docId} {
      // 允许认证用户读取自己的文档
      allow read: if request.auth != null && resource.data.uid == request.auth.uid;
      // 允许写入的条件:用户已认证、写入的文档属于当前用户、且用户已有文档数小于10
      allow create: if 
        request.auth != null &&
        request.resource.data.uid == request.auth.uid &&
        count(/databases/$(database)/documents/DataCollection, where: "uid", isEqualTo: request.auth.uid) < 10;
      // 更新和删除可按需调整,比如只允许用户修改/删除自己的文档
      allow update, delete: if request.auth != null && resource.data.uid == request.auth.uid;
    }
  }
}

规则说明

  1. 认证校验:request.auth != null确保只有登录用户才能操作文档。
  2. 归属校验:request.resource.data.uid == request.auth.uid保证用户只能创建属于自己的文档,无法替他人创建。
  3. 数量限制:count(...) < 10统计当前用户在DataCollection中的文档总数,只有总数小于10时才允许创建新文档。

注意事项

  • 该规则依赖Firestore的count()函数(需规则版本2及以上),针对10条的限制场景,统计效率完全达标。
  • 若使用批量写入,需确保批量中的每个文档都满足规则,否则整个批量操作会被拒绝。
  • 用户删除文档后,总数回到10以下时,仍可继续创建新文档。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 05:00:31