首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sync_gateway couchbase requireRole

Sync_gateway couchbase requireRole
EN

Stack Overflow用户
提问于 2014-06-09 14:44:47
回答 2查看 218关注 0票数 5

我对Sync_gateway的角色有问题。我的sync_functionrequireRole("adminSync");上抛出一个missing role错误。

我使用配置如下的用户admin1进行访问:

代码语言:javascript
复制
  "name": "admin1",
  "all_channels": {},
  "passwordhash_bcrypt": "**************",
  "explicit_roles": {
    "adminSync": 1
  },
  "rolesSince": {
    "adminSync": 1
  }

此外,我的角色配置为:

代码语言:javascript
复制
{
  "name": "adminSync",
  "admin_channels": {
    "CH_HORAS": 1,
    "CH_PERSONAS": 1,
    "CH_PROYECTOS": 1
  },
  "all_channels": {
    "CH_HORAS": 1,
    "CH_PERSONAS": 1,
    "CH_PROYECTOS": 1
  }
}

知道这个错误吗??

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-11 21:39:48

我发现出了什么问题,

变量realUserCtx.roles是一个映射,因此根据需要比较两个数组的requireRole(..),它总是返回false。

因此,我需要更改src/channels/sync_runner.go的源代码,以便在比较之前将此映射转换为数组。

代码语言:javascript
复制
function mapToArray(mapObject){
        var _array = [];
        if(mapObject){
            for (var property in mapObject) {
                _array.push(property);
            }
        }
        return _array;
    }

然后..。

代码语言:javascript
复制
function requireRole(roles) {
    ...
    if (!anyInArray(mapToArray(realUserCtx.roles), roles))
    }

如果你需要更多的解释,你可以私下联系我。祝好运

票数 1
EN

Stack Overflow用户

发布于 2014-06-09 19:31:26

我也在解决同样的问题。我查看了sync_gateway源代码src/channels/sync_runner.go并找到了requireRole定义,即:

代码语言:javascript
复制
function requireRole(roles) {
            if (!shouldValidate) return;
            roles = makeArray(roles);
            if (!anyInArray(realUserCtx.roles, roles))
                throw({forbidden: "missing role"});
    }

尽管如此,我还是尝试在我的同步函数中添加这部分代码:

代码语言:javascript
复制
console.log(Array.isArray(realUserCtx.roles));

..and,它返回假。realUserCtx.roles不是一个数组,而是一个函数,我不知道这个函数体内有什么。

我希望它能帮助我们找到解决办法。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24122742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档