You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中使用DatabaseReference实现实时数据库登录功能异常

这是Firebase存储

你的代码存在两个关键问题,直接导致不管密码对错都会跳转到Tasks.class:

1. 密码匹配逻辑完全写反

原代码里用了!Objects.equals(userPassword, userPasswordFromDB)作为判断条件,意思是输入密码和数据库密码不一致时执行跳转,这和注释标注的"Password matches"完全相反,是密码错误仍跳转的核心原因。

2. 快照取值方式错误

orderByChild("email").equalTo(email)返回的是包含所有匹配邮箱节点的快照,直接调用snapshot.child("password")无法正确获取到目标用户的密码,必须遍历子节点才能拿到对应数据。

修复后的完整代码

public void checkUserFromDB(){
    String email = String.valueOf (Email.getText ()).trim ();
    String userPassword = String.valueOf (Password.getText ()).trim ();

    Query query = databaseReference.orderByChild ("email").equalTo (email);
    query.addListenerForSingleValueEvent (new ValueEventListener () {
        @Override
        public void onDataChange(@NonNull DataSnapshot snapshot) {
            if (snapshot.exists()) {
                Email.setError(null);
                // 遍历匹配到的用户节点
                for (DataSnapshot userSnapshot : snapshot.getChildren()) {
                    String userPasswordFromDB = userSnapshot.child("password").getValue(String.class);
                    if (Objects.equals(userPassword, userPasswordFromDB)) {
                        // 密码匹配,跳转页面
                        Password.setError(null);
                        startActivity(new Intent(getApplicationContext(), Tasks.class));
                        finish();
                    } else {
                        // 密码不匹配,提示错误
                        Password.setError("Password does not match.");
                        Password.requestFocus();
                    }
                }
            } else {
                Email.setError("Username aren't exists, please open a new account.");
                Email.requestFocus();
            }
        }
        @Override
        public void onCancelled(@NonNull DatabaseError error) {

        }
    });
}

内容的提问来源于stack exchange,提问作者AdirMor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 16:27:18