[kotlin] 코틀린 안드로이드 MVVM 아키텍처에서의 로그인/인증 처리 방법
본 포스트에서는 안드로이드 앱 개발에서 코틀린과 MVVM 아키텍처를 활용하여 로그인 및 사용자 인증을 처리하는 방법을 살펴보겠습니다. MVVM(Model-View-ViewModel)은 안드로이드 앱의 UI와 비즈니스 로직을 분리하고 데이터 바인딩을 용이하게 하는 아키텍처 디자인 패턴입니다.
1. 모델 및 뷰모델 클래스 생성
우선, 로그인 및 사용자 인증과 관련된 데이터와 로직을 처리하기 위해 모델(Model) 및 뷰모델(ViewModel) 클래스를 생성합니다.
모델 클래스
// User 모델 클래스
data class User(val username: String, val password: String)
뷰모델 클래스
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
class AuthViewModel : ViewModel() {
private val _isLoggedIn = MutableLiveData<Boolean>()
val isLoggedIn: LiveData<Boolean>
get() = _isLoggedIn
fun login(user: User) {
// 로그인 로직 구현
// 인증에 성공하면 _isLoggedIn 값을 true로 설정
// 실패할 경우 에러 처리
}
}
2. UI 레이어 구현
다음으로, UI 레이어에서 사용자 인터페이스와 뷰모델을 바인딩하여 사용자가 로그인할 수 있는 화면을 구현합니다.
레이아웃 XML
<!-- 로그인 화면 레이아웃 -->
<LinearLayout>
<!-- 사용자명 입력 필드 -->
<EditText
android:id="@+id/usernameEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<!-- 비밀번호 입력 필드 -->
<EditText
android:id="@+id/passwordEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<!-- 로그인 버튼 -->
<Button
android:id="@+id/loginButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="로그인" />
</LinearLayout>
액티비티 또는 프래그먼트
class LoginActivity : AppCompatActivity() {
private lateinit var authViewModel: AuthViewModel
// ... (onCreate 및 기타 메서드 생략)
private fun setupObservers() {
// 사용자명 및 비밀번호 입력 변화 관찰
usernameEditText.addTextChangedListener { /* 사용자명 입력 변화 처리 */ }
passwordEditText.addTextChangedListener { /* 비밀번호 입력 변화 처리 */ }
// 로그인 버튼 클릭 시
loginButton.setOnClickListener {
val username = usernameEditText.text.toString()
val password = passwordEditText.text.toString()
val user = User(username, password)
authViewModel.login(user)
}
// 로그인 상태 변경 관찰
authViewModel.isLoggedIn.observe(this, { isLoggedIn ->
if (isLoggedIn) {
// 로그인 성공 시 처리
} else {
// 로그인 실패 시 처리
}
})
}
}
3. 사용자 로그인 처리 및 상태 관리
뷰모델에서 구현한 로그인 메서드를 통해 사용자가 입력한 사용자명과 비밀번호로 로그인을 시도하고 결과에 따라 적절한 상태를 뷰에 반영합니다. 또한 사용자의 로그인 상태를 관찰하여 UI를 업데이트할 수 있습니다.
이처럼 코틀린과 MVVM 아키텍처를 활용하면 안드로이드 앱에서 로그인 및 사용자 인증 처리를 깔끔하게 구현할 수 있습니다. 각 계층 간의 의존성을 낮추고 유지보수성을 높일 수 있다는 장점 또한 기대할 수 있습니다.