>Java >java지도 시간 >Firebase 로그인 후 여러 사용자 유형(학생, 교사 및 관리자)을 특정 활동으로 리디렉션하는 방법은 무엇입니까?

Firebase 로그인 후 여러 사용자 유형(학생, 교사 및 관리자)을 특정 활동으로 리디렉션하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-22 02:04:13767검색

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");
        }
    }
};

그러나 세 번째 사용자 유형인 관리자(관리자)를 추가할 때가 되자 혼란이 발생했습니다. 그리고 이를 특정 활동으로 리디렉션합니다.

이 문제에 대한 해결책은 세 번째 사용자 유형을 포함하도록 데이터베이스 구조를 수정하고 사용자의 "유형" 속성을 확인하기 위한 리스너를 추가하는 것이었습니다. node.

데이터베이스 구조

새 데이터베이스 스키마는 다음과 같습니다.

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

코드 수정

ValueEventListener는 "유형"을 확인하도록 수정되었습니다. " 값에 따라 사용자를 속성화하고 리디렉션합니다.

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으로 문의하세요.