作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
阅读 Firebase 规则 Documentation我找不到任何有关如何阻止匿名访问特定集合或文档的信息。
换句话说,我想阻止未登录的用户,也想阻止匿名登录的用户。我只想允许以自己身份登录的用户(通过电子邮件、Facebook、Google、短信等)。
我怎样才能做到这一点?
这是我想出的代码,但不起作用:
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;
}
}
}
最佳答案
我还没有尝试过这个,但我怀疑您可以使用 request.auth.token.firebase.sign_in_provider
(请参阅 auth
的文档)。它应该包含用于匿名身份验证的值anonymous
。因此,要允许为非匿名登录用户创建文档:
allow create: if request.auth.uid != null && request.auth.token.firebase.sign_in_provider != 'anonymous';
或者,您可以将其更改为仅允许某些提供商,前提是文档中给出了 token firebase.sign_in_provider
的其他可能值。
关于Firebase 规则 : How to block anonymous access?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53419498/
我是一名优秀的程序员,十分优秀!