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

如何配置Firebase规则使无需注册的React Native门店下单应用可安全提交数据

符合你当前需求的Firestore规则配置

service cloud.firestore {
  match /databases/{database}/documents {
    // 商品集合规则:如果实际集合名是products请替换掉productos
    match /productos/{productId} {
      // 所有用户可读取在售商品
      allow read: if true;
      // 禁止普通用户修改商品数据,后续接入后台账号后可补充后台权限校验
      allow write: if false;
    }

    // 订单集合规则:如果实际集合名是orders请替换掉ordenes
    match /ordenes/{orderId} {
      // 允许未登录用户创建新订单
      allow create: if true;
      // 适配你当前用订单ID查询进度的逻辑,仅允许查询单个订单
      allow get: if true;
      // 禁止普通用户修改、删除已有订单,避免数据被恶意篡改
      allow update, delete: if false;
      // 禁止批量拉取订单列表,避免全量订单数据泄露
      allow list: if false;
    }

    // 全局默认拦截所有未匹配的请求,避免权限漏配
    match /{document=**} {
      allow read, write: if false;
    }
  }
}

规则说明

  1. 修正了你之前规则里路径多空格的语法错误,原规则match / databases / {database} / documents 中间的空格会导致规则不生效
  2. 废弃了全局通配的开放权限,按集合拆分权限控制,从根源降低安全风险
  3. 商品集合仅开放读权限,避免普通用户篡改商品价格、库存等核心数据
  4. 订单集合仅开放最低必要权限:未登录用户只能创建新订单、用已知的订单ID查询单条订单进度,无法修改删除订单、也无法批量爬取所有订单数据
  5. 最后加了全局默认拒绝规则,所有未明确配置权限的路径都会被拦截,不会出现漏配风险

后续认证功能上线后优化方案

等你完成用户认证功能开发后,可以进一步收紧权限:

  • 下单时将用户的uid写入订单的author_uid字段
  • 将订单的get权限调整为allow get: if request.auth.uid == request.resource.data.author_uid,确保只有订单创建人才能查看订单进度
  • 补充后台管理账号的权限校验,开放后台对商品、订单的修改权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 12:06:05