我使用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则表明该用户已登录。
那怎么可能呢?
最佳答案
删除帐户不会自动使该帐户的当前 session 失效。他们当前的 session 将保持有效,直到过期。您可以在Firebase仪表板中设置 session 到期间隔。
如果要force the user to be logged out,请调用ref.unauth()
。
用户更新电子邮件,密码或重设密码时。 Firebase Auth后端吊销其 token ,要求它们重新进行身份验证或尝试再次登录。这是一项安全功能。例如,如果用户的帐户被盗,则可以重置其密码。所有其他 session 必须重新认证。
如果将用户配置文件保留在数据库中,则可以检查该记录是否仍存在于安全规则中:root.child('users').child(auth.uid).exists()
。
另请参阅: