首页 >Java >java教程 >Firebase 登录后如何将多个用户类型(学生、教师和管理员)重定向到特定活动?

Firebase 登录后如何将多个用户类型(学生、教师和管理员)重定向到特定活动?

Patricia Arquette
Patricia Arquette原创
2024-12-22 02:04:13807浏览

How to Redirect Multiple User Types (Students, Teachers, and Admins) to Specific Activities After Firebase Login?

将多种用户类型重定向到特定活动

在 Firebase 上开发的应用需要在登录后将三种类型的用户重定向到各自的活动。该应用程序已经使用以下代码成功重定向了两种用户类型,即学生和教师:

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()) {
                        startActivity(new Intent(MainActivity.this, student.class));
                    } else {
                        startActivity(new Intent(MainActivity.this, teacher.class));
                    }
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {
                }
            };
            uidRef.addListenerForSingleValueEvent(valueEventListener);
        } else {
            Log.d("TAG", "firebaseUser is null");
        }
    }
};

但是,当添加第三种用户类型,管理员(管理员)时,出现了混乱,并将它们重定向到其特定活动。

此问题的解决方案包括修改数据库结构以包含第三种用户类型并添加侦听器来检查用户的“类型”属性

数据库结构

新的数据库架构如下所示:

Firebase-root
|
--- users
|
--- uidOne
|     |
|     --- name: "Ed"
|     |
|     --- type: 1
|
--- uidTwo
|     |
|     --- name: "Tyff"
|     |
|     --- type: 2
|
--- uidOne
|     |
|     --- name: "Admin"
|     |
|     --- type: 3

代码修改

ValueEventListener 已修改为检查“Type” " 属性并根据其值重定向用户:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("users").child(uid);
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        if (dataSnapshot.child("Type").getValue(Long.class) == 1) {
            startActivity(new Intent(MainActivity.this, student.class));
        } else if (dataSnapshot.child("TYPE").getValue(Long.class) == 2) {
            startActivity(new Intent(MainActivity.this, teacher.class));
        } else if (dataSnapshot.child("TYPE").getValue(Long.class) == 3) {
            startActivity(new Intent(MainActivity.this, admin.class));
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage());
    }
};
uidRef.addListenerForSingleValueEvent(valueEventListener);

通过这些更改,应用程序成功登录后将三种用户类型重定向到各自的活动。

以上是Firebase 登录后如何将多个用户类型(学生、教师和管理员)重定向到特定活动?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn