Nic*_*der 4 permissions synchronization realm ios swift
我正在使用Realm Swift和Realm Object Server作为我正在处理的应用程序的存储解决方案.我可以使用带有关系数据库的传统服务器,但我真的不需要服务器来做任何实际的工作.我真正需要的唯一后端只是存储和数据同步.Realm似乎提供了我想要的东西.
到目前为止,我有一个领域的实例.我开始遇到的问题是访问控制.我觉得我可能对Realm可以为我提供的东西有一个根本的误解,并且那里没有大量奇妙的资源.Realm文档非常详细,但它没有最好的工作示例.
我的应用程序将用于跟踪可用的一组玩家的团队.这组球员将是相对稳定和不变的.然而,团队将经常变化.考虑到这一点,我对我的Realm设置有了以下想法:
/Players.每个用户都应该具有对该领域的读取权限,但只有管理员应该具有写入和管理权限./~/MyRoster.该领域应该由该用户读/写.我认为用户应该能够授予另一个用户对其领域的临时读/写访问权限.这听起来像是Realm后端的可接受使用吗?我该如何管理中央共享数据池?我是否应该在/~/MyRoster注册后立即为用户创建领域?我怎样才能按照我想要的方式配置权限?对我来说,权限结构似乎很奇怪.似乎我可以使用PermissionOffer/PremissionOfferResponse构造来实现我想要的Realm共享.
任何帮助将不胜感激.
感谢您的详细报道.你提出的架构似乎很合适.这是我建议的:
/Players领域,我会在开发中创建它.今天这有点笨拙,你必须使用客户端SDK以管理员用户身份打开Realm(因为只有管理员用户可以在其范围/~/目录之外创建Realms ).您可以在应用中创建一个代码路径,如果您以管理员身份登录,则会打开/PlayersRealm,然后将权限更改应用于该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
}
Run Code Online (Sandbox Code Playgroud)
此代码路径不需要多次运行.我们的计划是在仪表板中将这种功能添加到浏览器中,这样您就可以手动创建全局Realm并在不使用客户端SDK的情况下调整权限.
对于特定于用户的Realms,您不需要立即创建它们,因为Realms将在用户最终需要时延迟创建.我的意思是Realm的设置使你可以在客户端上同步打开一个Realm(启用离线优先功能),然后在客户端同步到服务器的第一次创建之后,服务器实际上是否会意识到在其中创建领域.因此,您需要设置客户端代码以/~/MyRoster在必要时打开Realm .
至于向其他用户授予权限,这将使用Swift 访问控制API将权限更改应用于用户的Realm并授予对其他用户的访问权限.这可以动态发生,以便用户可以根据需要授予,然后撤销权限.
对于关于组的第三部分,我将创建另一个全局Realm /Group,它具有对包含组的表示的所有用户的读/写访问权.例如,您可以拥有一个Group包含链接到User对象的列表属性的对象,User在您的应用程序中每个用户1 个.这样,每个用户都可以对Realm进行更改,以表示他/她所属的组.
您可以设置领域功能以侦听对/Group领域的更改,以便在将用户添加到组或删除时,该功能将触发对组中各个领域的必要权限更改.
现在,如果你担心对/GroupRealm的访问控制,你可以改为设置一个使用admin用户应用更改的Realm Function /Groups,监听/~/MyRequests用户可以在其中向该Realm写入一个对象的用户特定的Realm ,这将触发对组Realm进行更改的功能.通过这种方式,您可以防止未经授权的请求,并将/GroupRealm 保持为除管理员之外的所有用户的只读权限.
| 归档时间: |
|
| 查看次数: |
765 次 |
| 最近记录: |