2017-04-07 17 views
0

私の目標はかなり簡単です。私はプライベートRealmObjectsを共有Realmに作成する必要があります。共有レルム内でプライベートレルムオブジェクトを作成する方法

私はすでにオブジェクトを作成して共有realmに保存しました。私は、ユーザーに個人的にオブジェクトを保存する能力を与えたいと思います。私が知る限り、私はこれを達成する2つの方法がありますが、どちらも働いていません。

SOLUTION 1:Usersシェアレルムは、次のサンプルのようにお互いにオブジェクトを許可する権限を使用して:

public static void setActiveUser(final SyncUser user) { 
     if (user.isValid()) { 
      SyncConfiguration defaultConfig = new SyncConfiguration.Builder(user, Colombo.SERVER_URL).build(); 
      Realm.setDefaultConfiguration(defaultConfig); 
      Realm realm = user.getManagementRealm(); 
      realm.executeTransaction(new Realm.Transaction() { 
       @Override 
       public void execute(Realm realm) { 
        String includeAll = "*"; 
         change = new PermissionChange(includeAll, includeAll, true, true, false); 
         realm.insert(change); 
       } 
      }); 
     } 
    } 

残念ながら、これは動作しません、同期Realmsは、ちょうど現在のSyncUserにvisibileです。

SOLUTION 2:必要に応じて共通のプライベートSyncUserへの切り替え、彼のプライベートなアイテムを収集するために、各登録されたユーザーの公開アイテムやプライベートSyncUserを表示/保存するために「共通」SyncUserを作成します。とにかく私にとっては非常に非効率的です。どのようにあなたに響くのですか?私はそれをすることができる別の方法があると思いますか?

+1

「共有レルム内にプライベートレルムオブジェクトを作成する必要があります」 プライベートではどういう意味ですか?他のユーザーがアクセスしないように非公開にするか、またはこのユーザー専用の秘密にするか、 「個人」オブジェクトにUUIDを追加することができます。そのため、ユーザーごとに照会することができます。オブジェクトをまったく表示したくない場合は、ユーザーごとに別のレルムを作成する必要がありますこれは、スキーマを部分的に共有することができないためです。 –

+0

プライベートの場合は、サーバーに格納されているが作成者ユーザーだけにアクセスできるレルムオブジェクトを意味します。 他のユーザーが許可されていないオブジェクトにアクセスできるため、UUIDの使用は安全ではありません。 –

+2

アクセス許可APIはレルム全体に適用されるためいくつかのオブジェクトを非公開にする必要がある場合は、ユーザーに依存するエンドポイント(例: 'http:// server /〜/ Private')を使用して、彼のRealm「Private」を参照してください。この方法で、一度「Shared」と「Private」の2つのRealmsになります –

答えて

1

レルムの認証メカニズムを使用して、1つのレルムの異なるアカウントに異なるログイン許可を与えることはできません。

Nabilが述べたように、UUIDをユーザーに割り当て、ユーザーごとにのみクエリを実行することで、プログラムでアクセスを制御できます。

関連する問題