如何在登录后保持会话开放?

时间:2017-05-15 20:08:08

标签: android sqlite firebase firebase-authentication

我在我的项目中有登录但是当我关闭它之后打开我的应用程序时,必须再次登录。我使用Firebase进行身份验证,但我想要这样的内容:

check if user is logged -> 
if not - open login, 
else - open my main activity"

我不知道我是否必须使用SQLite或者某些内容,或者如果用户没有注销,即使您关闭应用程序,如何保持会话处于活动状态。

4 个答案:

答案 0 :(得分:1)

由于您使用的是Firebase来进行身份验证,因此您可以轻松验证用户是否具有此类认证:

FirebaseAuth auth = FirebaseAuth.getInstance();
FirebaseAuth.AuthStateListener authListener = new FirebaseAuth.AuthStateListener() {
    @Override
    public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
        firebaseUser = firebaseAuth.getCurrentUser();
        if (firebaseUser != null) {
            Toast.makeText(MainActivity.this, "You are signed in Firebase!", Toast.LENGTH_SHORT).show();
            //Redirect to MainActivity
        } else {
            Toast.makeText(MainActivity.this, "You are signed out from Firebase!", Toast.LENGTH_SHORT).show();
            //Redirect to LoginActivity
        }
    }
};

不需要SqLite。希望它有所帮助。

答案 1 :(得分:0)

如果当前用户不为null,则表示已登录,否则为null

boolean isUserLoggedIn = FirebaseAuth.getInstance().getCurrentUser() != null;

答案 2 :(得分:0)

解决了!发现这个并且100%工作

  @Override
    public void onStart() {
        super.onStart();
        // Check if user is signed in (non-null) and update UI accordingly.
        FirebaseUser currentUser = fAuth.getCurrentUser();
        updateUI(currentUser);
    }

    private void updateUI(FirebaseUser user) {
        if (user != null) {

            startActivity(new Intent(Login.this, MainActivity.class));
        } else {
            //returns to login
         }
     }

答案 3 :(得分:-1)

您可以在登录sharedpreferences时设置布尔标志,因此当您加载应用程序时,您需要验证该标志,如果它是真的,则调用某些活动,但如果是,则调用登录活动。 只需记住在用户注销时将flag设置为false。