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

为什么手机认证(Phone Authentication)下Firestore安全规则不生效?

Firestore 手机认证场景安全规则不生效排查方案
  • 优先核对用户ID匹配逻辑:打印手机认证成功后返回的uid,与/user路径下的对应文档ID做逐字符比对。常见错误是开发时误将手机号作为用户文档ID存储,而Firebase Phone Auth生成的uid是与手机号无直接关联的独立字符串,和邮箱密码认证生成的uid规则一致,不会直接使用手机号作为uid取值。
  • 优化安全规则写法:你当前的规则逻辑本身无错误,可添加空鉴权判断避免偶发异常,优化后参考代码如下:
rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /user/{userId}/{document=**} {
      allow read, write: if request.auth != null && request.auth.uid == userId;
    }
  }
}

新增的request.auth != null判断可以避免未登录请求、或者auth状态未同步完成的请求触发空值匹配异常,减少误拦截。

  • 清除客户端请求缓存:手机端登录成功后,可主动调用Firestore的disableNetwork()后再调用enableNetwork()方法,强制刷新请求的鉴权上下文,避免复用之前未登录状态下的缓存请求信息。
  • 调整请求触发时机:所有Firestore读写请求必须在FirebaseAuth.AuthStateListener的登录成功回调中触发,不要在短信验证提交完成后立刻发起请求,此时全局auth状态还未同步完成,请求携带的鉴权信息为空会被规则拦截。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:09:02