我有一个移动应用程序,可以从Firebase服务器读取数据,而无需进行Firebase登录/身份验证(帖子和新闻),并且我想创建一个管理网页,可以在其中登录,添加或修改新闻,因此我需要在那里写权限。我的规则目前是:
{
"rules": {
".read": true,
".write": "auth !== null && ?????
}
}
我可以写类似"user.emailAddress == 'mail@example.com'"
的东西吗?
答案 0 :(得分:2)
您可以在数据库上创建用户表,例如
{
"users":{
"your UID":{
"isAdmin": true
}
}
}
然后修改规则:
{
"rules": {
".read": true,
".write": "auth.uid != null && root.child("users").child(auth.uid).isAdmin === true"
}
}
答案 1 :(得分:0)
您可能希望先阅读有关securing user data的文档。这里有很多要知道的。
一种可能性是使用已知用户的uid来限制访问。 auth.uid
变量包含uid。
".write": "auth.uid == 'the-known-uid'"
您还可以使用auth.token
访问有关用户的其他信息,包括电子邮件地址(可能不存在):
".write": "auth.token.email == 'the@email.address'"
您还可以使用自定义身份验证令牌,该令牌也为covered in the documentation。
答案 2 :(得分:0)
创建数据库:
{
"users":{
"your UID":{
"isAdmin": true
}
}
}
设置规则:
错误:
{
"rules": {
".read": true,
".write": "auth.uid != null && root.child("users").child(auth.uid).isAdmin === true"
}
}
对:
{
"rules": {
".read": true,
".write": "auth.uid != null && root.child('users').child(auth.uid).child('isAdmin').val() === true"
}
}