有没有办法让我不需要任何身份验证就可以读取firebase节点中的数据?
我正在写一个android/ios应用程序,新用户应该有有效的邀请码。因此,要做到这一点,我必须检查用户是否有有效的邀请码,然后让他们创建帐户。我已经在一个节点中保存了所有有效的邀请码。我想根据该列表中的代码验证用户输入的代码。
目前,我已经允许对我的数据库进行读写。
{
"rules": {
".read": true,
".write": true
}
}我没有收到来自addValueEventListener或addListenerForSingleValueEvent的任何响应。
提前谢谢。
发布于 2017-12-23 16:34:45
如果你制定了读写规则,那么它可以被任何人读取。所以没有安全保障。最好通过"Firebase匿名身份验证“来验证用户,然后从数据库中读取。在匿名身份验证中,用户将在后台进行身份验证,他们不需要做任何事情。这样,您就不会损害安全性。这是在firebase Here中使用匿名身份验证的教程
mAuth.signInAnonymously()
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// Sign in success, update UI with the signed-in user's information
Log.d(TAG, "signInAnonymously:success");
FirebaseUser user = mAuth.getCurrentUser();
updateUI(user);
} else {
// If sign in fails, display a message to the user.
Log.w(TAG, "signInAnonymously:failure", task.getException());
Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.",
Toast.LENGTH_SHORT).show();
updateUI(null);
}
// ...
}
});发布于 2017-12-24 14:41:14
构建您的模式,使其具有一个专用于非身份验证访问的节点,然后执行以下操作:
{
"rules": {
"invitations": {
".read": "true",
".write": "false"
},
"$other_locations": {
".read": "auth != null",
".write": "auth != null"
}
}
}归根结底是你的用例。
https://stackoverflow.com/questions/47950858
复制相似问题