基于用户 id 的灵活命名分区的领域同步权限
Realm sync permissions for flexibly-named partitions based on user id
我是 Realm Sync(和 Realm)的新手。我正在尝试将 REST / SQL 服务器系统转换为 Realm Sync(以避免必须编写我自己的本地设备缓存代码)。
我得到了一个简单的配置,只有一个 API-key 用户和空分区,读写权限刚设置为 true
。
但对于我更复杂的应用程序,我想要更小的子分区以减少需要在本地设备上缓存的数据量,并且我希望子分区能够由客户端动态创建.理想情况下,我希望允许 API-key 用户连接到名称以其用户 ID(或其他一些已知字符串,例如配置文件名称)开头的任何分区。但是我找不到将“开始于”条件纳入权限的方法。
我最好的尝试是尝试将读取和写入同步权限设置为:
{
"%%partition": {
"$regex": "^%%user.id"
}
}
但我的客户端连接失败,显示 Permission denied (BIND, REFRESH)
。 (是的,我尝试使用 "$regex": /^%%user.id/
,但 Realm UI 拒绝了该语法。)Realm 同步日志显示“用户无权在分区上同步 (ProtocolErrorCode=206)”。
正如您在日志图像中看到的那样,分区名称等于此测试的用户 ID。
我想做的事情可行吗?如果是这样,我该如何设置同步权限以使其正常工作?
这可以使用函数来完成。如果像我一样,您是 Realm Sync 的新手并且不熟悉 Javascript,请不要担心 - 毕竟这并不难。 (感谢 鼓励我尝试!)
我按照 Define a Function 页面上的说明创建了我的 userCanAccessPartition
函数,如下所示:
exports = function(partition){
return partition.startsWith(context.user.id);
};
然后我将我的同步权限设置为:
{
"%%true": {
"%function": {
"name": "userCanAccessPartition",
"arguments": ["%%partition"]
}
}
}
我是 Realm Sync(和 Realm)的新手。我正在尝试将 REST / SQL 服务器系统转换为 Realm Sync(以避免必须编写我自己的本地设备缓存代码)。
我得到了一个简单的配置,只有一个 API-key 用户和空分区,读写权限刚设置为 true
。
但对于我更复杂的应用程序,我想要更小的子分区以减少需要在本地设备上缓存的数据量,并且我希望子分区能够由客户端动态创建.理想情况下,我希望允许 API-key 用户连接到名称以其用户 ID(或其他一些已知字符串,例如配置文件名称)开头的任何分区。但是我找不到将“开始于”条件纳入权限的方法。
我最好的尝试是尝试将读取和写入同步权限设置为:
{
"%%partition": {
"$regex": "^%%user.id"
}
}
但我的客户端连接失败,显示 Permission denied (BIND, REFRESH)
。 (是的,我尝试使用 "$regex": /^%%user.id/
,但 Realm UI 拒绝了该语法。)Realm 同步日志显示“用户无权在分区上同步 (ProtocolErrorCode=206)”。
我想做的事情可行吗?如果是这样,我该如何设置同步权限以使其正常工作?
这可以使用函数来完成。如果像我一样,您是 Realm Sync 的新手并且不熟悉 Javascript,请不要担心 - 毕竟这并不难。 (感谢
我按照 Define a Function 页面上的说明创建了我的 userCanAccessPartition
函数,如下所示:
exports = function(partition){
return partition.startsWith(context.user.id);
};
然后我将我的同步权限设置为:
{
"%%true": {
"%function": {
"name": "userCanAccessPartition",
"arguments": ["%%partition"]
}
}
}