android - 我可以写入数据,但无法在 Firebase 中读取
问题描述
我是火力基地的新手。我对 Firebase 安全规则有疑问。我可以将数据写入 firebase 数据库,但无法读取写入的数据。我的数据库看起来像 -
user|
|_uid(auto-generated)
|
|_name:Bob
|_score:100
|_email:bob@gmail.com
我的 firebase 数据库规则看起来像 -
"user":{
"$uid":{
"uname":{
".read":"$uid=== auth.uid",
".write":"$uid=== auth.uid"
},
"score":{
".read":"$uid=== auth.uid",
".write":false
},
"email":{
".read":"$uid=== auth.uid",
".write":"$uid=== auth.uid"
}
}}
我已经用模拟器进行了测试,一切(读写)都很好。但是尽管我登录了一个帐户,但无法从我的应用程序中读取。当我将所有读写设置为真正的上$uid节点时,我的应用程序中的所有读写也都可以。但我只想让授权人阅读
我已经在 stackoverflow 上搜索过,但没有解决方案。
对不起我的英语写作能力。
解决方案
当您使用实时数据库时,处理此问题的最佳方法是创建一个child authorized
,然后将所有授权的 uid 保存在该子项中,然后将您的规则设置如下:`“规则”:
{
".read": true,
".write": "root.child('authorized').hasChild(auth.uid)"
}
}`
你可以参考这个项目来查看示例实现
推荐阅读
- c# - 无法继续使用捕获的 GUI 上下文,但为什么会出现死锁?
- java - maven如何寻找传递依赖
- html - 如何删除第一页页脚中出现的黑色行?
- spring-boot - ZooKeeper 会话在测试中过期
- php - 为什么 base64_encode 函数只在我的一台服务器上引发错误?
- android - google.android.gms:play-services-oss-licenses 在混淆后不起作用
- laravel - 我想知道我们可以让 laravel 表单验证像 codeigniter 一样工作吗?
- php - 通过它们在php中的索引选择性地通过多维关联数组进行交互
- javascript - 如何创建一个自动重新连接的 webSocket 类在 JavaScript 中扩展 WebSocket
- android - 获得高速视频会话的最佳视频预览大小