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

Angular项目中Firestore安全规则未生效,未登录仍可读写数据库的问题求助

Angular项目中Firestore安全规则未生效,未登录仍可读写数据库的问题求助

我刚接触Firebase和Firestore数据库,最近在做一个Angular项目,用@angular/fire包和Firebase进行交互。

首先,我用邮箱密码的方式实现了用户登录,这段代码运行完全正常:

try {
  const user = await signInWithEmailAndPassword(this.auth, email, password);
  return user;
} catch (e) {
  return null;
}

登录之后,我写了一个往Firestore存储数据的方法,测试下来也没问题:

addVideoId(storageVideoId: StorageVideoIdModel) {
  const notesRef = collection(this.firestore, 'videoIds');
  return setDoc(doc(notesRef, '' + storageVideoId.date), storageVideoId);
}

接下来问题就来了——我在Firestore控制台设置了安全规则,要求只有已认证的用户才能读写videoIds集合:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /videoIds/{id} {
      allow read, write: if request.auth != null;
    }
  }
}

我用Firebase的规则模拟器测试,结果显示未登录时确实无法进行读写操作,规则是有效的。但实际运行Angular代码时,就算我没有登录,调用addVideoId方法居然还是能成功写入数据!

我完全搞不懂为什么会这样,也不知道该怎么让规则里的request.auth正确获取到用户的认证状态。已经卡了两天了,找不到能把认证和数据库规则结合起来的示例或教程,真心求助各位大佬帮忙解决这个问题!

谢谢!

备注:内容来源于stack exchange,提问作者Davide.77

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 08:23:11