複数のユーザーとの連携 - Flutter SDK
Realm SDK を使用すると、複数のユーザーが特定のデバイスで同時にアプリにログインできます。 Atlas App Services クライアント アプリケーションは、複数のユーザーが同時にログインした場合でも、単一のアクティブ ユーザーのコンテキストで実行されます。 再度ログインする必要なく、認証されたユーザー間ですばやく切り替えることができます。
重要
ログインしたユーザーは、再認証を行わずに アクティブ ユーザー になる場合があります。 アプリによっては、セキュリティ上の脆弱性がある場合があります。 たとえば、共有デバイス上のユーザーは、認証情報を提供したり明示的な許可を必要とせずに、同僚のログイン アカウントに切り替えることができます。 アプリケーションでより厳格な認証が必要な場合は、ユーザー間の切り替えを避け、別のユーザーを認証する前にアクティブなユーザーを明示的にログアウトすることをおすすめします。
ユーザー アカウントの状態
ユーザーが特定のデバイスまたはブラウザで Realm SDK を介して初めてログインすると、SDK はユーザーの情報を保存し、デバイス上のユーザーの状態を追跡します。 ログアウトした場合でも、ユーザーをアクティブに削除しない限り、ユーザーのデータはデバイス上に残ります。
次の状態では、ある時点でデバイス上のユーザーを記述します。
認証済み:デバイスにログイン済みで、ログアウトしたことがない、またはセッションが取り消されているユーザー。
アクティブ: 特定のデバイスで現在アプリを使用している単一の認証済みユーザー。 SDK はこのユーザーを送信リクエストに関連付け、App Services はデータアクセス権限を評価し、このユーザーのコンテキストで関数を実行します。 詳細については、アクティブ ユーザーを参照してください。
非アクティブ: 現在アクティブなユーザーではない、すべての認証済みユーザー。 現在非アクティブなユーザーにいつでもアクティブなユーザーを切り替えることができます。
ログアウト:デバイスで認証されたが、ログアウトされたユーザーまたはセッションが取り消されたユーザー。
以下の図は、特定のイベントが発生したときに App Services クライアント アプリ内のユーザーが状態間でどのように移行するかを示しています。
デバイスへの新しいユーザーの追加
Realm SDK は、ユーザーがそのデバイスに初めてログインするときに、そのデバイスにユーザーを自動的に追加します。 ユーザーはログインすると、すぐにアプリケーションのアクティブ ユーザー になります。
final emailPwCredentials = Credentials.emailPassword("lisa@example.com", "myStr0ngPassw0rd"); await app.logIn(emailPwCredentials);
ユーザーを初めてログインする方法の詳細については、「 新しいユーザー アカウントの登録 」を参照してください。
デバイス上のすべてのユーザーを一覧表示
イテラブル にアクセスできます アプリの App.users を読み取ることで、デバイスに保存されているすべての ユーザー アカウント の プロパティ。この イテラブルには、現在認証されているかどうかに関係なく、特定のデバイス上のクライアントアプリにログインしたすべてのユーザーが含まれます。
final users = app.users;
デバイスからユーザーを削除
オブジェクトをUser
app.removeUser() に渡すことで、デバイスからユーザーに関するすべての情報を削除し、ユーザーを自動的にログアウトできます。
await app.removeUser(user!);
アクティブなユーザーの変更
app.switchUser() を呼び出すと、アプリの アクティブ ユーザー を別のログイン ユーザーに切り替えることができます 切り替え先のUser
オブジェクト上で次のようにします。
app.switchUser(otherUser);