【发布时间】:2017-05-27 20:29:12
【问题描述】:
我想使用security quickstart guide中的这些规则
{
"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);
我一直在查看有关 firebases 实时数据库的信息,但每次他们进行身份验证时,他们只会说“现在我们将关闭身份验证,但请确保您在生产中使用它!”。
【问题讨论】:
-
要了解安全规则中的
auth变量,请参阅firebase.google.com/docs/database/security/…。一旦用户登录并包含uid属性,它就会自动填充,该属性是登录用户的唯一标识符。 -
您共享的代码未对用户进行身份验证,因此此规则将失败
$uid === auth.uid。要了解如何登录用户,请参阅firebase.google.com/docs/auth -
是的,抱歉,所以我有一个 LoginActivity 来验证设置此活动的意图。我相信问题可能是我在不同的活动中对用户进行身份验证,并且它正在以某种方式失去其“身份验证”状态
-
Firebase 身份验证状态在活动之间保持不变。但
mFirebaseUser可能不是。没有看到minimal, complete code that reproduces the problem,很难确定。
标签: java firebase firebase-realtime-database firebase-authentication firebase-security