Docs Menu
Docs Home
/ /
Atlas Device SDK
/ /

managed 다중 사용자 애플리케이션 - Kotlin SDK

이 페이지의 내용

  • 사용자 계정
  • 사용자 상태
  • 장치에 새 사용자 추가
  • 활성 사용자 조회
  • 장치의 모든 사용자 나열
  • 사용자 로그아웃
  • 기기에서 사용자 제거

이 페이지에서는 Kotlin SDK를 사용하여 단일 기기에서 여러 Atlas App Services 사용자를 managed 설명합니다. 클라이언트 앱에서 사용자를 인증하고 로그인하는 방법을 알아보려면 사용자 생성 및 인증 - Kotlin SDK를 참조하세요.

Realm을 사용하면 여러 사용자가 특정 기기에서 동시에 앱에 로그인할 수 있습니다. Realm 클라이언트 애플리케이션은 여러 사용자가 동시에 로그인한 경우에도 단일 활성 사용자 의 컨텍스트에서 실행됩니다. 한 번에 한 명의 활성 사용자만 있을 수 있으며, 활성 사용자는 모든 발신 요청과 연결됩니다.

사용자 계정 은 애플리케이션 의 고유한 단일 사용자를 나타냅니다. App Services 는 사용자가 기기에서 앱 을 처음 인증하고 로그인할 때 고유한 User 객체 를 생성합니다. 로그인 한 후 SDK는 사용자 정보를 저장하고 기기에서 사용자의 상태 를 추적 합니다. 이 데이터는 장치에서 사용자를 적극적으로 제거 하지 않는 한 사용자가 로그아웃하더라도 장치에 남아 있습니다. App Services 사용자 및 사용자 계정에 대한 자세한 내용은 App Services 문서에서 사용자 계정 을 참조하세요.

특정 기기에서 사용자의 가능한 상태 는 코틀린 SDK ( 코틀린 SDK (Kotlin SDK) )에서 사용자가 표시합니다. 상태 열거형. 사용자 계정은 LOGGED_OUT, LOGGED_IN 또는 REMOVED 일 수 있습니다. 다음은 이러한 상태가 주어진 시간에 기기 내 사용자에게 어떻게 해당하는지 설명합니다.

  • 로그인: 장치에 로그인했지만 로그아웃하지 않았거나 세션이 취소되지 않은 인증된 사용자입니다. user.stateLOGGED_IN 입니다. 로그인한 사용자는 다음 중 하나일 수 있습니다.

    • 활성: 지정된 디바이스에서 현재 앱을 사용 중인 인증된 단일 사용자입니다. SDK는 이 사용자를 발신 요청과 연결하고, Atlas App Services는 데이터 액세스 권한을 평가하고 이 사용자의 컨텍스트에서 함수를 실행합니다.

    • 비활성: 현재 활성 사용자가 아닌 인증된 모든 사용자입니다.

  • 로그아웃: 장치에서 인증했지만 이후 로그아웃했거나 세션이 취소된 모든 사용자입니다. user.stateLOGGED_OUT 입니다.

  • 제거됨: 장치에서 적극적으로 제거된 모든 사용자입니다. SDK는 사용자를 앱에서 로그아웃하고 사용자에 대한 모든 정보를 기기에서 제거합니다. 사용자는 앱을 다시 사용하려면 다시 인증해야 합니다. user.stateREMOVED 입니다.

사용자가 로그아웃, 로그인 및 활성 상태, & 로그인 및 비활성 상태 등 다양한 상태에 대해 간략하게 설명하는 다이어그램입니다.

Realm SDK는 사용자가 해당 장치에 처음 로그인할 때 자동으로 장치에 추가합니다. 사용자가 성공적으로 로그인하면 즉시 애플리케이션의 활성 사용자가 됩니다.

다음 예제에서는 Joe가 앱에 로그인하여 활성 사용자가 됩니다. 그런 다음 Emma는 로그인하여 Joe를 활성 사용자로 대체합니다.

val app = App.create(YOUR_APP_ID) // Replace with your App ID
runBlocking {
// Log in as Joe
val joeCredentials = Credentials.emailPassword(joeEmail, joePassword)
try {
val joe = app.login(joeCredentials)
// The active user is now Joe
val user = app.currentUser
Log.v("Successfully logged in. User state: ${joe.state}. Current user is now: ${user?.id}")
assertEquals(joe, user)
} catch (e: Exception) {
Log.e("Failed to log in: ${e.message}")
}
// Log in as Emma
val emmaCredentials = Credentials.emailPassword(emmaEmail, emmaPassword)
try {
val emma = app.login(emmaCredentials)
// The active user is now Emma
val user = app.currentUser
Log.v("Successfully logged in. User state: ${emma.state}. Current user is now: ${user?.id}")
assertEquals(emma, user)
} catch (e: Exception) {
Log.e("Failed to log in: ${e.message}")
}
}
Successfully logged in. User state: LOGGED_IN. Current user is now: 65133e130075a51f12a9e635
Successfully logged in. User state: LOGGED_IN. Current user is now: 65133e1357aaf22529343c1b

App.currentUser 를 사용하여 현재 활성 사용자를 조회 할 수 있습니다. 여러 사용자가 로그인한 경우 장치에 마지막으로 로그인한 유효한 사용자가 반환됩니다. 이 메서드는 로그인한 사용자가 없는 경우 null 를 반환합니다.

val user = app.currentUser

자세한 내용은 현재 사용자 조회를 참조하세요.

app.allUsers() 메서드를 사용하여 기기에 저장된 모든 알려진 사용자 계정의 맵에 액세스할 수 있습니다. 이 메서드는 현재 인증 여부( user.stateLOGGED_IN 또는 LOGGED_OUT)에 관계없이 특정 기기에서 클라이언트 앱에 로그인한 모든 사용자를 반환합니다.

다음 예시 에서 SDK는 Emma와 Joe의 user.id를 모두 반환합니다.

// Get all known users on device
val allUsers = app.allUsers()
for ((key) in allUsers) {
Log.v("User on Device $device: $key")
}
User on Device 651330cebe1d42b24b8d510f: 65133e1357aaf22529343c1b
User on Device 651330cebe1d42b24b8d510f: 65133e130075a51f12a9e635

user.logOut() 메서드 를 사용하여 로그인한 사용자를 앱에서 로그아웃할 수 있습니다. 메서드. 로그아웃한 사용자는 기기에 계속 저장되지만 앱을 사용하려면 다시 로그인해야 합니다.

다음 예제에서는 Joe가 현재 현재 사용자로 로그인되어 있습니다. 앱에서 Joe를 로그아웃한 후 Joe가 여전히 장치에 사용자로 저장되어 있고 Emma가 현재 사용자임을 확인합니다.

try {
joe.logOut()
Log.v("Successfully logged out user. User state: ${joe.state}. Current user is now: ${app.currentUser?.id}")
} catch (e: Exception) {
Log.e("Failed to log out: ${e.message}")
}
val joeIsAUser = app.allUsers().containsKey(joe.id)
assertTrue(joeIsAUser)
Successfully logged out user. User state: LOGGED_OUT. Current user is now: 65133e1357aaf22529343c1b

사용자 로그인 및 앱 로그아웃에 대한 자세한 내용은 사용자 생성 및 인증 - Kotlin SDK를 참조하세요.

user.remove() 를 사용하여 기기에서 사용자와 해당 사용자에 대한 모든 정보를 적극적으로 제거할 수 있습니다. 제거된 후에는 사용자가 앱을 다시 사용하려면 다시 인증해야 합니다. App Services App에서 User 객체는 삭제 되지 않습니다 .

다음 예에서 Emma는 장치에 현재 (그리고 유일한) 로그인한 사용자입니다. Emma를 제거한 후 Joe가 여전히 로그아웃되어 있으므로 Emma가 장치에서 제거되고 현재 사용자가 없는 것을 확인합니다.

assertEquals(emma, app.currentUser)
try {
emma.remove()
Log.v("Successfully removed user. User state: ${emma.state}. Current user is now: ${app.currentUser?.id}")
} catch (e: Exception) {
Log.e("Failed to remove user: ${e.message}")
}
val emmaIsAUser = app.allUsers().containsKey(emma.id)
assertFalse(emmaIsAUser)
Successfully removed user. User state: REMOVED. Current user is now: null

사용자 제거 및 삭제에 대한 자세한 내용은 사용자 제거를 참조하세요.

돌아가기

사용자 API 키 생성 및 관리