Cloudant Local 上未经授权的管理员使用 nodejs-cloudant (nano)

Unauthorised admin on Cloudant Local using nodejs-cloudant (nano)

几个小时以来,我一直在尝试让 cloudant 本地化。我已经按照 here

中的描述通过 docker 安装了

我可以使用默认凭据访问 localhost:8080 上的仪表板。当我提供相同的信用时,我可以卷曲数据库,例如curl -X PUT $HOST/database -u admin:pass

问题是,当我连接到 nodejs-cloudant 模块时,我总是收到 401 - 未经授权的错误,特别是:

{ error: 'unauthorized', reason: 'one of _all_dbs, _admin, server_admin is required for this request', statusCode: 401 }

问题似乎是当 cloudant 本地连接时没有返回用户。当我连接到基于云的 cloudant 实例时,reply.userCtx 被填充,但是在本地连接时它是:userCtx: { name: null, roles: [] } }

实际登录似乎有效,因为我用不正确的凭据进行了测试。

这是我设置凭据的地方:

    const credentials = {
      account: (stage === 'local') ? 'admin' : db.credentials.username,
      password: (stage === 'local') ? 'pass' : db.credentials.password,
      plugin: 'promises',
    }
    if (stage === 'local') {
      credentials.url = 'http://localhost:8080'
    }
    this.cloudant = cloudant(credentials)

如果您像这样提供 url:

var url="http://admin:pass@localhost:8080";
this.cloudant = cloudant({ url: url, plugin: "promises"});

然后它工作正常。

问题是当您说 account = 'admin' 时,库假定主机名是 admin.cloudant.com。如果您提供完整的 URL,那么它是明确的并且可以完美地工作。

希望对您有所帮助。