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

Firestore数据校验规则不生效,无法拦截年龄小于18的用户创建请求

问题原因

  • Firestore安全规则的评估逻辑为:只要任意一条匹配当前请求路径的规则返回允许,请求就会直接放行,不会叠加其他同路径匹配规则的限制。你配置的第一条是匹配所有路径的通配符规则match /{document=**},只要请求时间早于2021年9月22日就允许所有读写,自然会覆盖后面针对users集合的年龄校验规则。
  • 次要注意点:你当前写的判断条件是request.resource.data.age > 18,如果需求是禁止小于18岁的用户,等于18岁的用户也会被拦截,建议改成>= 18。
  • 额外排查项:确认你修改规则后已经在Firebase控制台点击了「发布」按钮,未发布的规则不会生效。

修复方案

调整规则的排列顺序,把更具体的集合规则放在通配符规则前面,或者直接删除不需要的全局通配规则即可,示例如下:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{user} {
      allow create: if request.resource.data.age >= 18;
    }
    // 全局通配规则放在所有具体规则之后
    match /{document=**} {
      allow read, write: if request.time < timestamp.date(2021, 9, 22);
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:48:04