到目前为止,我有一个领域的实例.我开始遇到的问题是访问控制.我觉得我可能对Realm可以为我提供的东西有一个根本的误解,并且那里没有大量奇妙的资源. Realm文档非常详细,但它没有最好的工作示例.
我的应用程序将用于跟踪可用的一组玩家的团队.这组球员将是相对稳定和不变的.然而,团队将经常变化.考虑到这一点,我对我的Realm设置有了以下想法:
>包含所有玩家组合的单个领域:/玩家.每个用户都应该具有对该领域的读取权限,但只有管理员应该具有写入和管理权限.
>应用程序/〜/ MyRoster的每个用户的单个领域.该领域应该由该用户读/写.我认为用户应该能够授予另一个用户对其领域的临时读/写访问权限.
>多个用户应该能够组建一个团队,在那里他们可以阅读(并可能写入)所有团队用户的名单.
这听起来像是Realm后端的可接受使用吗?我该如何管理中央共享数据池?我应该在注册后立即为用户创建一个/〜/ MyRoster领域吗?我怎样才能按照我想要的方式配置权限?对我来说,权限结构似乎很奇怪.看起来我可以使用PermissionOffer / PremissionOfferResponse结构来实现我想要的Realm共享.
任何帮助将不胜感激.
解决方法 感谢您的详细报道.你提出的架构似乎很合适.这是我建议的:>对于全球/玩家领域,我会在开发中创建它.今天,这有点笨拙,因为您必须使用客户端SDK以管理员用户身份打开Realm(因为只有管理员用户可以在其范围/〜/目录之外创建Realms).您可以在应用中创建一个代码路径,如果您以管理员身份登录,则会打开/ Players Realm,然后对该Realm应用权限更改:
let permission = SyncPermissionValue(realmPath: "/Players",userID: "*",// To apply to all users accessLevel: .read)user.applyPermission(permission) { error in if let error = error { // handle error return } // permission was successfully applIEd}
此代码路径不需要多次运行.我们的计划是在仪表板中将这种功能添加到浏览器中,这样您就可以手动创建全局Realm并在不使用客户端SDK的情况下调整权限.
>对于特定于用户的Realms,您不需要立即创建它们,因为当用户最终需要时,将会延迟创建Realms.我的意思是Realm的设置使你可以在客户端上同步打开一个Realm(启用离线优先功能),然后在客户端同步到服务器的第一次创建之后,服务器是否真正意识到了在其中创建领域.因此,您需要设置客户端代码,以便在必要时在/〜/ MyRoster中打开Realm.
至于向其他用户授予权限,这将使用Swift access control APIs将权限更改应用于用户的Realm并授予对其他用户的访问权限.这可以动态发生,以便用户可以根据需要授予,然后撤销权限.
>关于组的第三部分,我将创建另一个全局Realm / Group,它对拥有组表示的所有用户具有读/写访问权限.例如,您可以拥有一个Group对象,其中包含一个链接到User对象的List属性,每个用户在您的应用程序中有1个User.这样,每个用户都可以对Realm进行更改,以表示他/她所属的组.
您可以设置Realm Function以侦听对/ Group Realm的更改,以便在将用户添加到组或删除时,该功能将触发对组中各个Realms的必要权限更改.
现在,如果您担心对/ Group Realm的访问控制,您可以设置一个Realm Function,它使用admin用户将更改应用于/ Groups,监听用户可以编写的用户特定的Realm /〜/ MyRequests此Realm的一个对象,它将触发函数对组Realm进行更改.通过这种方式,您可以防止未经授权的请求,并将/ Group Realm保持为除管理员之外的所有用户的只读权限.
总结以上是内存溢出为你收集整理的ios – 跨多个用户配置权限和共享域全部内容,希望文章能够帮你解决ios – 跨多个用户配置权限和共享域所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)