我想添加权限,以便只有经过身份验证的用户才能将数据读/写到我的数据库中。
但是我尝试编写不同类型的权限,每次都得到相同的结果。
DatabaseError:权限被拒绝
如果将读写设置为true
,则只有我可以读写数据库。
//this works
{
"rules": {
".read": true,
".write": true
}
}
//does not work
{
"rules": {
"userdetails":{
"$user_id":{
".read": "$user_id === auth.uid",
".write": "$user_id === auth.uid"
}
}
}
}
//this also not works
{
"rules": {
".read": "auth.uid != null",
".write": "auth.uid != null"
}
}
输入数据的代码是这样的:
String userfirebaseid=FirebaseAuth.getInstance().getCurrentUser().getUid();
reff = FirebaseDatabase.getInstance().getReference().child("userdetails").child((userfirebaseid));
Map setValues = new HashMap();
setValues.put("eMail ID",user_id);
setValues.put("Name",user_name);
setValues.put("Phone Number",phn_no);
reff.setValue(setValues);
我的Firebase数据库
请告诉我我在这方面做错了什么。
最佳答案
首先,以下代码的用法是正确的。
{
"rules": {
".read": true,
".write": true
}
}
输入数据的代码看起来不错,请尝试替换
Hashmap
以推送您的值并添加一个onFailureListener
,这样您就可以看到得到的error
:Map<String,Object> map = new HashMap<String,Object>();
map.add("eMail ID",user_id);
map.add("Name",user_name);
map.add("Phone Number",phn_no);
reff.push().setValue(map).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
e.printStackTrace();
}
});
您可以阅读有关在Realfire Firebase数据库上保存数据的更多信息here