我对Sync_gateway
的角色有疑问。
我的sync_function
在missing role
上抛出requireRole("adminSync");
错误。
我正在使用配置如下的用户admin1进行访问:
"name": "admin1",
"all_channels": {},
"passwordhash_bcrypt": "**************",
"explicit_roles": {
"adminSync": 1
},
"rolesSince": {
"adminSync": 1
}
我也将角色配置为:
{
"name": "adminSync",
"admin_channels": {
"CH_HORAS": 1,
"CH_PERSONAS": 1,
"CH_PROYECTOS": 1
},
"all_channels": {
"CH_HORAS": 1,
"CH_PERSONAS": 1,
"CH_PROYECTOS": 1
}
}
对这个错误有任何想法吗?
谢谢。
最佳答案
回覆,
我发现出了什么问题
变量realUserCtx.roles是一个映射,因此根据需要比较两个数组的requireRole(..),它始终返回false。
因此,在比较之前,我需要更改src / channels / sync_runner.go的源代码以将此映射转换为数组。
function mapToArray(mapObject){
var _array = [];
if(mapObject){
for (var property in mapObject) {
_array.push(property);
}
}
return _array;
}
然后..
function requireRole(roles) {
...
if (!anyInArray(mapToArray(realUserCtx.roles), roles))
}
如果您需要更多说明,可以通过私人信息与我联系。
祝好运