Android Studio Java开发:读取Firebase Realtime Database值判断用户等级跳转页面
Firebase Realtime Database 用户等级校验跳转方案
前置准备
- 确认项目已集成Firebase Realtime Database SDK,且数据库安全规则配置允许认证用户读取自身节点数据,参考规则如下:
{ "rules": { "Users": { "$uid": { ".read": "$uid === auth.uid", ".write": "$uid === auth.uid" } } } }
修改后完整登录代码
mAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if(task.isSuccessful()){ FirebaseUser user = mAuth.getCurrentUser(); // 先判空避免空指针异常 if (user == null) { Toast.makeText(MainActivity.this, "获取用户信息失败", Toast.LENGTH_SHORT).show(); progressBar.setVisibility(View.GONE); return; } if(user.isEmailVerified()) { // 定位到当前用户对应的数据库节点 DatabaseReference userRef = FirebaseDatabase.getInstance().getReference("Users").child(user.getUid()); // 单次读取用户数据 userRef.addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot snapshot) { // 读取ident字段,默认值可以设为普通用户标识 String ident = snapshot.child("ident").getValue(String.class); if ("associado".equals(ident)) { startActivity(new Intent(MainActivity.this, AssociadoActivity.class)); } else { startActivity(new Intent(MainActivity.this, AdminActivity.class)); } progressBar.setVisibility(View.GONE); } @Override public void onCancelled(@NonNull DatabaseError error) { Toast.makeText(MainActivity.this, "读取用户等级失败:" + error.getMessage(), Toast.LENGTH_SHORT).show(); progressBar.setVisibility(View.GONE); } }); } else { user.sendEmailVerification(); Toast.makeText(MainActivity.this, "验证邮件已发送,请先验证邮箱", Toast.LENGTH_SHORT).show(); progressBar.setVisibility(View.GONE); } } else { Toast.makeText(MainActivity.this, "O login não pode ser efetuado", Toast.LENGTH_SHORT).show(); progressBar.setVisibility(View.GONE); } } });
逻辑说明
- 登录成功后先校验用户实例是否为空,避免空指针崩溃
- 邮箱验证通过后,通过当前用户的UID定位到Realtime Database中对应的用户数据节点
- 调用
addListenerForSingleValueEvent单次读取用户数据,不需要持续监听 - 读取到
ident字段后做匹配判断,对应跳转不同页面 - 补充了数据读取失败、邮箱验证提示的 toast 反馈,优化用户体验
内容的提问来源于stack exchange,提问作者Douglas Soares
相关产品推荐
相关产品推荐

