[英]Realtime database authentication: failed: DatabaseError: Permission denied
我想使用安全快速入门指南中的这些规则
{
"rules": {
"users": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid"
}
}
}
}
虽然我不明白从哪里读取auth.uid
?
当我执行以下操作时,可以获取它来存储信息,以便可以确认问题出在auth.id
。 我不确定是否需要将其作为参数传递? 恐怕这是我迷路的地方。
{
"rules": {
"users": {
"$uid": {
".read": true,
".write": true
}
}
}
}
这是我用来测试的当前Java代码:
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference();
User u = new User("Jack", "jack@email.co.uk", "12345678"); // Very simple class holding this user information
myRef.child("users").child(mFirebaseUser.getUid()).setValue(u);
我一直在查看Firebase实时数据库上的信息,但是每次他们进行身份验证时,他们只是说:“目前,我们将关闭身份验证,但请确保您在生产中使用它!”。
好吧,您不需要传递参数,firebase会为您传递参数。 让我尝试解释一下,在控制台中创建用户并登录应用程序后,firebase将为每个用户提供不同的uid
(类似于ca07912b-7e65-41ad-8342-e87cf6f6ceb2
)。
因此,登录后它将存储在您的智能手机中,并且您在数据库Firebase中所做的每个请求都将分析您的安全规则,因此当您说只有uid X的所有者可以访问/users/**X**/..
然后,如果您未登录,则无权读取任何内容,也无法在此路径上进行写操作。
我是个白痴
我正在打电话给FirebaseAuth.getInstance().signOut();
在我最初用于调试目的的代码上方几行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.