我编写了一个代码,用于检查用户是否已经存在,并且他不会再次登录(这很烦人)。我将此代码添加到我的LoginActivity中,因为如果它已经注册并登录,则随后必须跳入AppStartActivity(登录或注册后的活动)。但是,我从Firebase数据库中删除了用户,并在启动时再次在模拟器上运行app时,尽管数据库中不存在任何帐户,但我仍处于AppStartActivity中,因为已将其删除。为什么会这样?
我检查用户是否存在:
mAuthStateListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
Intent switchToAppStartActivity = new Intent(getApplicationContext(), AppStartActivity.class);
startActivity(switchToAppStartActivity);
}
}
};
但是我删除了Firebase中的所有用户,但是当我在模拟器上启动应用程序时,我仍然在登录或注册后切换到“活动”。为什么?
这是整个代码:
import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
public class LoginActivity extends AppCompatActivity {
EditText emailLogin;
EditText passwordLogin;
private FirebaseAuth mAuth;
private FirebaseAuth.AuthStateListener mAuthStateListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
emailLogin = (EditText) findViewById(R.id.emailLogin);
passwordLogin = (EditText) findViewById(R.id.passwordLogin);
mAuthStateListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
Intent switchToAppStartActivity = new Intent(getApplicationContext(), AppStartActivity.class);
startActivity(switchToAppStartActivity);
}
}
};
}
public void setupNewAccount (View view){
Intent registrationActivity = new Intent(getApplicationContext(), EmailSignUpActivity.class);
startActivity(registrationActivity);
}
}
答案 0 :(得分:0)
Firebase身份验证使用ID令牌,这些令牌在铸造后的一个小时内有效。这样可以避免在每次调用时都需要重新验证令牌,并大大提高了性能。但这确实意味着用户保持登录状态是正常的,直到需要刷新其ID令牌为止。
如果需要将用户锁定在应用程序之外,则可能应该实施黑名单机制,将其UID存储在已知的不良用户列表中。这也防止他们简单地重新注册以重新获得访问权限。
另请参阅: