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
相关产品推荐
相关产品推荐

