如何在没有用户身份验证的情况下为数据库设置安全规则,即用户只能在其中更改自己的数据。 首次启动应用程序时,将添加新数据项,而无需任何身份验证并具有唯一ID。
我的JSON数据如下:
{
"Rand3435" : {
"Score" : 10,
"DID" : "Rand3435",
"CanDance" : "No"
},
"Rand7765" : {
"Score" : 25,
"DID" : "Rand7765",
"CanDance" : "Yes"
},
"Rand6769" : {
"Score" : 0,
"DID" : "Rand6769",
"CanDance" : "No"
},
"Rand1326" : {
"Score" : 10,
"DID" : "Rand1326",
"CanDance" : "No"
},
"Rand9879" : {
"Score" : 10,
"DID" : "Rand9879",
"CanDance" : "Yes"
},
"Rand5455" : {
"Score" : 10,
"DID" : "Rand5455",
"CanDance" : "No"
},
"Rand2322" : {
"Score" : 19,
"DID" : "Rand2322",
"CanDance" : "No"
}
}
放在“规则”部分中的JSON格式规则是什么?
请帮助,我是Firebase的新手。谢谢
答案 0 :(得分:0)
答案 1 :(得分:0)
如果您想保护对用户数据的访问,但又不想要求用户提供凭据,则需要Firebase的anonymous authentication。使用匿名身份验证,您只需通过以下简单的调用即可登录用户:
FirebaseAuth.getInstance().signInAnonymously();
从那里开始,用户具有一个标识他们的UID,您可以在数据中使用此UID将数据与该用户相关联,然后在安全规则中使用,以确保仅允许授权访问,如文档中所示。 user based security。
如果您坚持要生成自己的ID,则可以确保只有知道ID的人才能使用以下代码编写具有该ID的文档:
{
"rules": {
".read": false,
"$DID": {
// anyone who knows a DID can read its contents
".read": true,
// anyone who knows a DID can write its contents, as long as they specify the DID in the contents too
".write": "newData.child('DID').val() === $DID"
}
}
}
因此,用户必须在DID
属性和路径中指定相同的ID,才能进行写入。由于在根目录上没有读取权限,因此某人无法获取所有数据(以及所有DID)的列表。