更改 firebase 安全角色
Posted
技术标签:
【中文标题】更改 firebase 安全角色【英文标题】:Change the firebase security role 【发布时间】:2020-11-16 15:43:21 【问题描述】:我在 Firebase 实时数据库中有以下 JSON 文件结构。 我想扮演我的角色,如果 name 和 number 为空,不要读取数据,写入 firebase 暂时可以... 我写的代码是否正确?我不知道如何定位树中的特定分支(我是初学者)。它通过一个错误说 Unknown variable '$name'。
这是我的代码:
"rules":
"users":
"uid":
"name":
".read": "$name !== null",
".write": true
这是我的原始代码。
users
4hUNfg6xhiZ8ZTVQVFOYeFHL2ME3
blood_Group: "A+"
city: "الموصل الايسر"
donor: true
email: "a07503240115@gmail.com"
gender: "ذكر"
mobile: "07503240115"
name: "أحمد ابراهيم"
password: "a07503240115"
uid: "4hUNfg6xhiZ8ZTVQVFOYeFHL2ME3"
【问题讨论】:
【参考方案1】:只有一些预定义的变量可用于编写规则,例如:
auth
- 包含用户身份验证信息
data
- 包含当前树下的数据。
所以你不能像变量一样访问数据库这样的字段。
这就是我假设您想要的 - 如果该用户对象的 name
和 mobile
字段不为空,则用户应该只能从 users/$uid
到 read
。
你是这样做的:
"rules":
"users":
"$uid":
".read": "data.child('name').val() != null && data.child('name').val().length > 0 && data.child('mobile').val() != null && data.child('mobile').val().length > 0",
".write": true
仅当 name 和 mobile 不为 null 且不为空时,才允许对特定用户对象进行读取访问。
【讨论】:
感谢您的代码@Susheel。我试过你的代码,但没有用。我什至将 '&&' 更改为 '||'没有什么变化。我不知道问题出在哪里。 @AhmedMostfa_89 您在发布规则时是否收到任何错误消息?如果是,请分享。 我遵循了您共享的确切代码。它说 read denied 。模拟快照:键入读取位置 /users/uid/name/"أحمد ابراهيم" Data null Auth null @AhmedMostfa_89 那不是一个有效的路径。您只能参考文档而不是字段。有效路径是 - users/4hUNfg6xhiZ8ZTVQVFOYeFHL2ME3 。试试这个,让我知道。 现在可以使用了。谢谢,但是当我发布它时,它在我的手机上不起作用。我可以给您发送 Play 商店应用程序链接吗?一定有什么不对。好吧,该应用程序搜索血型和城市,如果在 Firebase 端找到数据(基于血型和城市),它将显示所有结果。但如您所知,有些用户在输入他们的信息时没有电话号码和姓名。我仍然面临同样的问题。以上是关于更改 firebase 安全角色的主要内容,如果未能解决你的问题,请参考以下文章
Android 中的 Firebase 本地数据库有多安全?