阅读Firebase规则Documentation,关于如何阻止匿名访问特定集合或文档,我一无所获。
换句话说,我想阻止未登录的用户,我也想阻止以匿名身份登录的用户。我想只允许以自己身份登录的用户(通过电子邮件,Facebook,Google,SMS等)登录。
我该怎么做?
这是我想出的代码,它不起作用:
service cloud.firestore {
match /databases/{database}/documents {
}
match /collectionExample/{documentExample} {
allow create: if request.auth.uid != null && request.auth.token.isAnonymous != false;
allow read: if request.auth.uid == resource.data.userId;
}
}
}
答案 0 :(得分:3)
我还没有尝试过,但是我怀疑您可以使用request.auth.token.firebase.sign_in_provider
(请参阅auth
的文档)。对于匿名身份验证,它应该包含值anonymous
。因此,要允许为非匿名登录用户创建文档:
allow create: if request.auth.uid != null && request.auth.token.firebase.sign_in_provider != 'anonymous';
或者,考虑到文档中标记firebase.sign_in_provider
的其他可能值,您也可以更改它以仅允许某些提供程序。