为什么firebase用户在从firebase仪表板中删除后仍然登录

时间:2016-06-09 18:27:20

标签: android firebase-authentication

我使用Firebase Quickstarts for Android Auth示例,然后我在firebase信息中心创建了一个用户,使用电子邮件和密码登录用户,用户已成功登录。 但是当我删除用户时,它仍然登录并显示来自(user.getEmail())的旧用户的电子邮件

// [START auth_state_listener]
    mAuthListener = new FirebaseAuth.AuthStateListener() {
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
            FirebaseUser user = firebaseAuth.getCurrentUser();
            if (user != null) {
                // User is signed in
                Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getEmail());
            } else {
                // User is signed out
                Log.d(TAG, "onAuthStateChanged:signed_out");
            }
            // [START_EXCLUDE]
            updateUI(user);
            // [END_EXCLUDE]
        }
    };
    // [END auth_state_listener]

我的firebase信息中心和AuthStateListener中没有用户确认用户已登录。

怎么可能呢?

1 个答案:

答案 0 :(得分:1)

删除帐户不会自动使该帐户的当前会话失效。他们当前的会话将保持有效,直到过期。您可以在Firebase信息中心中设置会话的过期时间间隔。

如果您想force the user to be logged out,请致电ref.unauth()

但是,一般来说,您可能需要构建授权规则,以防止具有删除帐户的有效令牌的此类用户对数据进行更改。

用户更新电子邮件,密码或重设密码时。 Firebase Auth后端吊销其令牌,要求它们重新进行身份验证或尝试再次登录。这是一项安全功能。例如,如果用户的帐户遭到破坏,则可以重置其密码。所有其他会话必须重新认证。

如果将用户配置文件保留在数据库中,则可以检查该记录是否仍存在于您的安全规则中:root.child('users').child(auth.uid).exists()

另请参阅: