본문 바로가기
Android/Project

[Cafe In] 기록 #3: 자동 로그인 구현

by YOONAYEON 2022. 6. 27.

사용자가 한 번 로그인을 하면 그 이후에 앱을 실행할 때는 바로 로그인 화면을 거치지 않고 메인 화면으로 넘어가게 해주고 싶었다. 그렇지만 무조건 사용자의 토큰값을 확인하는 액티비티를 거쳐서 다음 액티비티로 넘어가게 되어서 뒤로가기를 누르면 불필요한 액티비티를 마주했다.

 

이를 처음에는 finish() 함수를 사용할 생각을 못했어서, Splash화면을 따로 만들어서 그곳에서 토큰값에 따라 intent를 다르게 넘겨주려고 했다. 근데 그냥 startActivity()실행 후 이어서 코드에 finish()를 적어주면 해결됐다.

 

 

1. 토큰값 생성 및 받아오는 함수

 

    private String getToken(){
        spf = getSharedPreferences("Token", MODE_PRIVATE);
        String token = spf.getString("userToken", "");
        return token;
    }

    private void setToken(String token, int userId){
        SharedPreferences.Editor editor = spf.edit();
        editor.putString("userToken", token);
        editor.putInt("userId", userId);
        editor.commit();
    }

 

2. LoginActivity에서 사용자 토큰 저장여부에 따라 intent설정

 

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);

    if(getToken().equals("")){  //토큰 없음
        loginRequest();
    }else{
        Intent intent = new Intent(LoginActivity.this, MainActivity.class);
        intent.putExtra("user", getToken());
        startActivity(intent);
        LoginActivity.this.finish();
    }
}

 

3. 추후 로그아웃 시에는 SharedPreference의 값을 다시 빈 값으로 바꿔주면 됨