Realm 移动平台:公共、私有和共享数据库?
Posted
技术标签:
【中文标题】Realm 移动平台:公共、私有和共享数据库?【英文标题】:Realm Mobile Platform: public, private and shared databases? 【发布时间】:2017-07-13 13:24:37 【问题描述】:这个问题来自熟悉 CloudKit 并正在迁移到 Realm 移动平台的人的角度。
有了 CloudKit,我们有了私有、公共和共享数据库的概念。私有的属于用户,公共的每个用户都可以看到,共享数据库就像一个用户私有数据库的视图,用于在有限数量的用户(朋友)之间共享数据。
假设我想允许两个用户在一个项目上进行协作,用户 A 将创建项目并邀请用户 B 进行协作,我将与领域一起使用哪种机制来允许这样做,而无需完全打开用户 A 的私人领域用户 B(只有项目用户 A 想要共享的特定记录)?
【问题讨论】:
【参考方案1】:目前,Realm 权限细化到数据库 (Realm) 级别。无法授予仅适用于给定领域中数据子集的特定权限。
我们路线图中的一个高优先级项目是支持使用同步领域的部分副本的功能。同时,我们建议为给定用户创建多个私有领域来代表每个权限子集。例如,您可能有一个给定用户的真正私有领域,以及该用户的一个或多个领域,代表可以与其他用户共享的数据。在您的特定情况下,您可能希望为每个项目创建一个领域,而不是为用户拥有的所有项目创建一个领域。
至于实际授予权限,您可以创建一个RLMSyncPermissionValue
对象并将其传递给RLMSyncUser
上的适当API(例如-[RLMSyncUser applyPermission:callback:]
或-[RLMSyncUser revokePermission:callback:]
)以授予或撤销权限。这需要知道用户的身份,该身份由Realm Object Server在创建用户时生成。
您还可以创建一个RLMSyncPermissionOffer
对象来表示您的用户邀请另一个用户访问他们的领域(即项目)。这样的对象会生成一个字符串,该字符串可以通过不同的渠道(例如电子邮件)传递给另一个用户,并用于创建一个RLMSyncPermissionOfferResponse
对象来接受该提议。
最后,除了我之前提到的部分复制支持之外,我们还有一些其他项目正在准备中,以使同步 Realms 的协作使用更加容易;我们希望能尽快分享更多内容。
【讨论】:
酷,我想我会为每个项目设置不同的领域,并使用您所描述的权限。谢谢 我是否看到权限一旦被授予就不能被撤销? 您应该能够随时覆盖或撤销权限。 (撤销权限实际上只是用“无权访问”权限覆盖/更新现有权限。)以上是关于Realm 移动平台:公共、私有和共享数据库?的主要内容,如果未能解决你的问题,请参考以下文章
dnskeygen - 针对DNS安全性所生成的公共,私有和共享的密钥