Heim >Java >javaLernprogramm >Wie leite ich mehrere Benutzertypen (Schüler, Lehrer und Administratoren) nach der Firebase-Anmeldung zu bestimmten Aktivitäten um?
Eine auf Firebase entwickelte App erforderte die Umleitung von drei Benutzertypen nach der Anmeldung zu ihren jeweiligen Aktivitäten. Die App leitete bereits zwei Benutzertypen, nämlich Schüler und Lehrer, erfolgreich mit dem folgenden Code um:
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"); } } };
Allerdings kam es zu Verwirrung, als es an der Zeit war, einen dritten Benutzertyp hinzuzufügen, Administratoren (Administratoren). und sie zu ihrer spezifischen Aktivität umleiten.
Die Lösung für dieses Problem bestand darin, die Datenbankstruktur so zu ändern, dass sie den dritten Benutzertyp einbezog, und einen Listener hinzuzufügen, um das Attribut „Typ“ des Benutzers zu überprüfen Knoten.
Das neue Datenbankschema sieht folgendermaßen aus:
Firebase-root | --- users | --- uidOne | | | --- name: "Ed" | | | --- type: 1 | --- uidTwo | | | --- name: "Tyff" | | | --- type: 2 | --- uidOne | | | --- name: "Admin" | | | --- type: 3
Der ValueEventListener wurde geändert, um den „Type " Benutzer basierend auf ihrem Wert zuordnen und umleiten:
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);
Mit diesen Änderungen leitet die App die drei Benutzertypen erfolgreich weiter ihre jeweiligen Aktivitäten nach der Anmeldung.
Das obige ist der detaillierte Inhalt vonWie leite ich mehrere Benutzertypen (Schüler, Lehrer und Administratoren) nach der Firebase-Anmeldung zu bestimmten Aktivitäten um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!