java如何将多种类型的用户重定向到各自的活动?
我正在Firebase上创建一个投票应用程序。我有3种类型的用户。到目前为止,我可以成功地将两种用户(学生、教师)重定向到各自的活动,在他们使用下面的代码登录之后,MY Users so far 但现在我必须添加另一个用户(管理员),和其他用户一样,管理员也应该在登录后重定向到他们自己的特定活动。我对如何为第三个用户修改代码感到困惑
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(FirebaseAuth firebaseAuth) {
FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
if (mAuth.getCurrentUser() != null) {
String uid = mAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
uidRef = rootRef.child("STUDENTS").child(uid);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(com.google.firebase.database.DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
//start students activity
startActivity(new Intent(MainActivity.this, student.class));
} else {
//start teachers activity
startActivity(new Intent(MainActivity.this, teacher.class));
}
}
//
@Override
public void onCancelled(DatabaseError databaseError)
{
}
};
uidRef.addListenerForSingleValueEvent(valueEventListener);
}
else{
Log.d("TAG", "firebaseUser is null");
}
}
};
# 1 楼答案
您需要另一个数据结构,带有
users
和roles/admin
,roles/teacher
,roles/student
,然后检查哪个节点具有密钥(也与安全规则兼容)现在,您可以简单地删除
else
分支并查询所有三个节点# 2 楼答案
这是我使用Kotlin的最后一段代码,它工作得非常好
# 3 楼答案
使用onlye
if (dataSnapshot.exists())
无法解决3种类型的用户问题。假设第三个用户的类型为3
,则需要更改数据库结构。因此,您的新数据库架构应该如下所示:现在,您应该在
uid
节点上添加一个侦听器,并检查用户的类型,如下所示: