我正在努力解决firebase实时数据库的安全规则。我的数据库结构如下:
第一层是聊天。第二层是聊天伙伴(包含聊天伙伴用户ID的串联字符串)。在第三层,你有这些信息。在最后一个级别上有变量datetime、userid和message。
我的问题是,我如何进入第二个子节点,例如检查auth.uid是否在连接的字符串中。我的想法是,如果用户ID在聊天伙伴字符串中,则给予用户读取权限,以确保只有聊天伙伴可以读取他们的消息。或者这是一个思维错误?我尝试过很多事情,但没有成功:
"Chats":{
".read": "root.child('Chats').val().contains('auth.uid')"
}
#更新
{
"rules": {
"Chats": {
"$chatid": {
".read": "$chatid.contains(auth.uid)",
".write": "auth != null"
}
},
"Suchencards": {
".read": "true",
".write": "auth != null"
},
"UserData": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid"
}
}
}
}
我正在使用Firebase控制台上的游乐场来检查我是真是假,但是在这种情况下我得到了假的。
#更新2
屏幕1
屏幕2
如果您知道数据的确切路径,则只能访问规则中的数据,因此您将无法从/chats
上的规则访问所有聊天。这样做通常意味着你试图在错误的层面上定义规则。
例如,如果希望允许用户阅读聊天
的特定子项,则需要在该级别上定义规则:
"Chats":{
"$chatid": {
".read": "$chatid.contains(auth.uid)"
}
}
虽然上述内容适用于访问特定聊天室,但您将无法使用它来查询用户可以访问的所有聊天室(因为Firebase查询不支持“包含”操作)。查看我的答案中的userchattrooms
节点,了解更好的用户聊天室跟踪模型:在Firebase中管理聊天频道的最佳方法
我创建了一个应用程序,它使用Firebase实时数据库。我对安全规则有一个很大的问题。我的用户不需要登录使用应用程序,他们可以发送数据到数据库,无需任何身份验证。例如:这是一个简单的游戏,他们可以互相玩,然后他们可以保存分数。我想创建一个安全的数据库,但是任何人都可以写
我在中收到一条消息,告诉我我的项目有不安全的规则。但当我检查它时,我不太明白什么是不安全的。 它显示如下: 我保留了读取访问权限,因为它支持一个网站。所以任何访问该网站的人都应该能够读取数据。 至于写权限,据我所知,我是唯一能写的人。 请注意,我还有第三个系列(CollectionThree),规则中没有提到。这可能是原因吗? 除此之外,我还可以想象,只有web服务器可以获得读取权限,以便将内容提
好的,我有一个实时数据库连接到一个应用程序,直到今天规则(读写)都设置为真,一切都很好。。。。但每次有消息说 您的安全规则定义为public,因此任何人都可以窃取、修改或删除数据库中的数据 我尝试了几件事,但没有访问数据。。。只有当规则设置为true时,才能访问数据 但有没有办法修改规则,使其更安全 我希望只有少数已知的应用程序(我的应用程序)可以访问此数据
我在Android Studio中创建了一个应用程序,并将其与Firebase实时数据库链接。我需要执行3次验证: > 由Firebase通知服务生成的一次性PIN和手机验证。 在下一个屏幕上,用户的pin会根据我的数据库进行检查,最后他会进入菜单屏幕。 现在,我不知道应该设置什么作为我的安全规则,因为身份验证是在第2步进行的,所以我不能使用“auth”来设置规则,如果没有“auth”,数据库将是
我需要一些帮助来保护我的数据库。 我的数据库如下所示(我使用的是电话号码,而不是uid): 如您所见,在用户节点下有经过身份验证的用户的电话号码。我的目标是保护数据库,这样用户就可以读写自己的数据。 我尝试了以下代码,以允许每个用户读取和写入自己的数据: 但每当我在规则游乐场或我的应用程序上尝试这一点时,我都会被拒绝: 你们能帮我解决吗?
我需要一些帮助来保护我的数据库。 以下是我的安全规则: 我尝试了以下代码,以允许每个用户读取和写入自己的数据: 我的数据库如下所示(我使用的是电话号码,而不是uid): 但是由于某种原因,当我运行Firebase规则游乐场时,给定的auth.token.phone数等于我给出的确切位置,例如,我被拒绝读取选项。 这也发生在我的应用程序中,你们能帮我解决吗?