Docs Menu
Docs Home
/ /
Atlas Device SDK
/ /

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

이 페이지의 내용

  • 사용자 계정 상태
  • 장치에 새 사용자 추가
  • 장치의 모든 사용자 나열
  • 활성 사용자 변경
  • 기기에서 사용자 제거

Realm Swift SDK 를 사용하면 여러 사용자 가 특정 기기에서 앱 에 동시에 로그인할 수 있습니다. 클라이언트 애플리케이션은 여러 사용자가 동시에 로그인한 경우에도 단일 활성 사용자의 컨텍스트에서 실행 됩니다. 다시 로그인 할 필요 없이 인증된 사용자 간에 빠르게 전환할 수 있습니다.

중요

로그인한 사용자는 재인증 없이 누구나 활성 사용자가 될 수 있습니다. 이는 앱에 따라 보안 취약점일 수 있습니다. 예를 들어, 공유 장치의 사용자는 자격 증명을 제공하거나 명시적인 권한을 요구하지 않고도 동료의 로그인 계정으로 전환할 수 있습니다. 애플리케이션에 더 엄격한 인증이 필요한 경우 사용자 간 전환을 피하고 다른 사용자를 인증하기 전에 활성 사용자를 명시적으로 로그아웃하는 것이 좋습니다.

사용자가 특정 기기 또는 브라우저에서 Atlas App Services 를 통해 처음 로그인하면 Realm SDK 는 사용자 정보를 저장하고 기기에서 사용자의 상태 를 추적 합니다. 적극적으로 사용자를 제거하지 않는 한, 사용자가 로그 아웃하더라도 사용자의 데이터는 기기에 남아 있습니다.

다음 상태는 특정 시점의 기기 내 사용자를 설명합니다.

  • 인증됨: 장치에 로그인했지만 로그아웃하지 않았거나 세션이 취소되지 않은 모든 사용자입니다.

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

    • 비활성: 현재 활성 사용자가 아닌 모든 인증된 사용자입니다. 언제든지 활성 사용자를 현재 비활성 사용자로 전환 할 수 있습니다.

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

다음 다이어그램은 특정 이벤트가 발생할 때 클라이언트 앱 내의 사용자가 상태 간에 전환하는 방법을 보여줍니다.

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

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

let app = App(id: YOUR_APP_SERVICES_APP_ID)
let joeCredentials = Credentials.emailPassword(email: "joe@example.com", password: "passw0rd")
app.login(credentials: joeCredentials) { (result) in
switch result {
case .failure(let error):
print("Login failed: \(error.localizedDescription)")
case .success(let joe):
// The active user is now Joe
assert(joe == app.currentUser)
}
}
let emmaCredentials = Credentials.emailPassword(email: "emma@example.com", password: "pa55word")
app.login(credentials: emmaCredentials) { (result) in
switch result {
case .failure(let error):
print("Login failed: \(error.localizedDescription)")
case .success(let emma):
// The active user is now Joe
assert(emma == app.currentUser)
}
}

기기에 저장된 모든 사용자 계정 목록에 액세스 할 수 있습니다. 이 목록에는 현재 인증 여부에 관계없이 특정 기기에서 앱 에 로그인한 모든 사용자가 포함됩니다.

let app = App(id: YOUR_APP_SERVICES_APP_ID)
let users = app.allUsers
users.forEach({ (key, user) in
print("User: \(key) \(user)")
})

다음 코드를 사용하여 언제든지 앱의 활성 사용자 를 로그인한 다른 사용자로 변경할 수 있습니다.

let app = App(id: YOUR_APP_SERVICES_APP_ID)
// ... log in ...
// Get another user on the device, for example with `app.allUsers`
let secondUser: User = getSomeOtherUser()
XCTAssertNotEqual(app.currentUser, secondUser)
// assert(app.currentUser != secondUser)
// Switch to another user
// app.switch(to: secondUser)
// The switch-to user becomes the app.currentUser
// XCTAssertEqual(app.currentUser, secondUser)
// assert(app.currentUser == secondUser)

장치에서 사용자에 대한 모든 정보를 제거하고 사용자를 자동으로 로그아웃할 수 있습니다.

app.currentUser?.logOut { (error) in
// user is logged out or there was an error
}

돌아가기

이메일/비밀번호 사용자 관리