我有以下firestore规则设置,我想让任何人在建议集合中创建文档,但是只有特定用户可以更新它。规则如下:
service cloud.firestore {
match /databases/{database}/documents {
match /suggestions/{sugg} {
allow create, read;
allow update: if request.auth.uid == 'abc123';
}
}
}
当我在提供的模拟器中对此进行测试时,它可以正常工作;但是,等待30分钟后,我在已部署的应用程序中进行测试,但出现错误:
错误:权限缺失或不足。
在我的应用中,我正在对建议集合进行add()
调用。因此,在我指定allow create
的规则中,这已足够。我添加了read
,以防返回的文档被视为已读文档。
客户端:(AngularFire)
this.afs.collection('suggestions').add(sugg).then(() => {
this.submitted = true;
}, err => console.error('Firebase error:', err));
答案 0 :(得分:0)
问题是当request.auth为null时,Firestore无法尝试匹配uid
。解决方案是添加一些功能:
service cloud.firestore {
match /databases/{database}/documents {
function isSignedIn() {
return request.auth != null;
}
function isAdmin() {
return isSignedIn() && request.auth.uid == 'abc123';
}
match /suggestions/{sugg} {
allow create, read;
allow update: if request.auth.uid == 'abc123';
}
}
}