Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在共享领域中创建私有realmobject_Android_Realm_Realm Mobile Platform - Fatal编程技术网

Android 如何在共享领域中创建私有realmobject

Android 如何在共享领域中创建私有realmobject,android,realm,realm-mobile-platform,Android,Realm,Realm Mobile Platform,我的目标很简单:我需要在共享领域中创建私有realmobject 我已经创建了对象并将它们存储在共享域中。不过,我想让用户能够私下存储他们的对象。据我所知,我有两种方法来实现这一点,但没有一种有效 解决方案1:使用权限让用户彼此共享领域对象,如以下示例所示: public static void setActiveUser(final SyncUser user) { if (user.isValid()) { SyncConfiguration defa

我的目标很简单:我需要在共享领域中创建私有realmobject

我已经创建了对象并将它们存储在共享域中。不过,我想让用户能够私下存储他们的对象。据我所知,我有两种方法来实现这一点,但没有一种有效

解决方案1:使用权限让用户彼此共享领域对象,如以下示例所示:

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);
                }
            });
        }
    }
不幸的是,这不起作用,同步的领域只对当前的同步用户可见


解决方案2:创建一个公共SyncUser以保存/显示公共项目,并为每个注册用户创建一个私有SyncUser以收集其私有项目,根据需要从公共SyncUser切换到私有SyncUser。不管怎么说,我觉得它效率很低。你觉得怎么样?你认为我还有别的办法吗?

你不能使用域的身份验证机制为单个域的不同帐户提供不同的登录权限


正如Nabil所说,您可以通过将UUID分配给用户,然后仅为每个用户查询UUID,以编程方式控制访问。

我需要在共享领域中创建私有RealmObjects您所说的私有是什么意思?private as in其他用户不应访问它们,或者private as in仅限于此用户的事务/特定信息?对于后者,您可以向私有对象添加UUID,这样您就可以按用户查询它们,如果您根本不希望对象可见,那么您需要按用户创建一个单独的领域,因为您不能部分共享架构。对于私有对象,我指的是存储在服务器上的领域对象,但只能由创建者用户访问。使用UUID是不安全的,因为其他用户将能够访问他们没有权限的对象,例如,通过用另一个用户的UUID替换他们自己的UUID来查询服务器权限API适用于整个领域,因此如果您需要一些私有对象,那么恐怕您需要在他们自己的领域中将它们分开,通过使用依赖于用户的端点,例如:http://server/~/Private每个用户只能看到他的私有领域。这样你将得到两个领域,一个是共享的,一个是私有的