문서 메뉴

문서 홈애플리케이션 개발Atlas Device SDK

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

이 페이지의 내용

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

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

중요

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

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

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

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

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

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

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

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

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

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

var aimee = await app.LogInAsync(Credentials.EmailPassword(
"aimee@example.com", "sekrit"));
Assert.IsTrue(aimee.Id == app.CurrentUser.Id, "aimee is current user");
var elvis = await app.LogInAsync(Credentials.EmailPassword(
"elvis@example.com", "sekrit2"));
Assert.IsTrue(elvis.Id == app.CurrentUser.Id, "elvis is current user");

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

foreach (var user in app.AllUsers)
{
Console.WriteLine($"User {user.Id} is logged on via {user.Provider}");
}
Assert.AreEqual(2, app.AllUsers.Count());

RemoveUserAsync()를 호출하여 기기에서 사용자에 대한 모든 정보를 제거하고 사용자를 자동으로 로그아웃할 수 있습니다.

await app.RemoveUserAsync(elvis);
var noMoreElvis = app.AllUsers.FirstOrDefault(u => u.Id == elvis.Id);
Assert.IsNull(noMoreElvis);
Console.WriteLine("Elvis has left the application.");

SwitchUser() 를 호출하여 앱의 활성 사용자를 로그인한 다른 사용자로 전환할 수 있습니다.

app.SwitchUser(aimee);
Assert.IsTrue(aimee.Id == app.CurrentUser.Id, "aimee is current user");
← managed 이메일/비밀번호 사용자 - .NET SDK