【发布时间】:2019-03-06 09:21:10
【问题描述】:
我正在尝试为我的 Firebase 用户编写规则。
我的目标是制定一个规则,允许在数据库中写入/读取:
- 匿名用户通过Firebase auth 进行身份验证,这些用户是临时匿名帐户
- 经过身份验证的用户拥有电子邮件和密码。
我怎样才能做到这一点?
【问题讨论】:
标签: firebase firebase-authentication
我正在尝试为我的 Firebase 用户编写规则。
我的目标是制定一个规则,允许在数据库中写入/读取:
我怎样才能做到这一点?
【问题讨论】:
标签: firebase firebase-authentication
在Firebase Realtime Database 中,您可以通过以下方式为所有已登录的人授予访问整个数据库的权限:
{
"rules": {
".read": "auth.uid !== null",
".write": "auth.uid !== null"
}
}
在Cloud Firestore 中,您可以使用以下规则完成相同的操作:
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth.uid != null;
}
}
}
请注意,这两个示例都来自 Firebase 文档,因此我强烈建议您花一些时间研究一下。
【讨论】:
我不同意接受的答案。如果用户被认证为匿名用户,他仍然有 UID,所以检查它是否为空并不能解决问题。
'auth' 变量具有 'provider' 属性,因此您只需检查用户是否通过电子邮件和密码或匿名身份验证:
{
"rules": {
".read": "auth.provider != 'anonymous'",
".write": "auth.provider != 'anonymous'"
}
}
更多来自文档:https://firebase.google.com/docs/reference/security/database#variables
【讨论】:
request.auth.sign_in_provider != 'anonymous' (ref)