【发布时间】:2019-09-24 04:32:32
【问题描述】:
我正在为 android 制作一个 firebase notes 应用程序作为一个项目(我是初学者,从未做过类似的事情)。我目前的问题是,无论是哪个用户制作的,每个用户都可以看到每一个笔记。我想让每个用户只能读/写他们自己的笔记,但是到目前为止我发现和尝试的所有规则都使得根本没有笔记发送到数据库或不显示。我也尝试使用代码本身,但我所做的一切都使应用程序崩溃,但我愿意接受建议。
问题(以用户 2 身份登录):
有两个用户和两个注释的数据库:
我尝试过其他类似帖子的解决方案,例如:
"rules": {
"tasks": {
"$userId": {
".read": "auth.uid == $userId",
".write": "auth.uid == $userId",
}
}
}
}
但到目前为止,没有一个能正常工作。
用户创建:
fAuth.createUserWithEmailAndPassword(email,password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
fUserDatabase.child(fAuth.getCurrentUser().getUid()).child("basic").child("name")
.setValue(name).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
progressDialog.dismiss();
Intent mainIntent = new Intent(RegisterActivity.this, MainActivity.class);
startActivity(mainIntent);
finish();
Toast.makeText(RegisterActivity.this, "User Created", Toast.LENGTH_SHORT);
} else {
progressDialog.dismiss();
Toast.makeText(RegisterActivity.this, "Error: " + task.getException().getMessage(), Toast.LENGTH_SHORT);
}
}
});
} else {
progressDialog.dismiss();
Toast.makeText(RegisterActivity.this, "Error: " + task.getException().getMessage(), Toast.LENGTH_SHORT);
}
}
});
笔记创建:
(不在同一页上)
editText = findViewById(R.id.etx);
etd = findViewById(R.id.etdx);
button = findViewById(R.id.btnx);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference().child("posts").push();
Map<String, Object> map = new HashMap<>();
map.put("id", databaseReference.getKey());
map.put("title", editText.getText().toString());
map.put("desc", etd.getText().toString());
databaseReference.setValue(map);
Intent back = new Intent(NewNoteActivity.this, MainActivity.class);
startActivity(back);
}
});
我想让每个用户都只能看到、编辑和删除他们自己制作的笔记。
【问题讨论】:
标签: java android firebase-realtime-database firebase-authentication firebase-security