【问题标题】:couchDB 401 error沙发数据库 401 错误
【发布时间】:2015-03-16 15:53:27
【问题描述】:

我有一个名为“guestbook”的 couchDB 数据库。我首先使用下面的代码将用户添加到“_users”数据库:

$scope.submit = function(){

var url = "https://sub.iriscouch.com/_users/org.couchdb.user:" + $scope.name;
console.log(url);

$http({

    url: url,
    method: "PUT",
    data: {name : $scope.name, 
           password: $scope.pass,
           roles: [],
           type: "user"
          },
    withCredentials: true,
    headers: {"Authorization": auth_hash(adminUsername, adminPass)}
})

.success(function(data, status, headers, config){

    console.log(headers);
    console.log(config);
 });
 }

将用户添加到 _users 后,我使用 Futon 将该用户作为成员添加到我的“留言簿”_security 文档中。

之后,我尝试使用该用户名和密码(作为成员添加到“guestbook”_security)来获取“guestbook”数据库中的所有文档。 见下面的代码:

   $scope.login = function(){
   var url = "https://sub.iriscouch.com/guestbook/_all_docs";

   $http({
    url: url,
    method: 'GET',
    params: {
        include_docs: true,

    },
    withCredentials: true,
    headers: {"Authorization": auth_hash($scope.uname, $scope.upass)}
})

.success(function(data, status, headers, config){

    $scope.book = data.rows;
    console.log($scope.book);

});
}

function auth_hash(username, password)
{
     return "Basic" +btoa(username + ":" + password);
}

但每次我厌倦了访问“_all_docs”时,我都会收到 401 未经授权的错误。我用来访问的用户名已作为成员添加到留言簿数据库的 _security 文档中。

谁能帮忙。我做错了什么。

【问题讨论】:

    标签: javascript angularjs couchdb


    【解决方案1】:

    401 表示 Couch 无法登录您的用户,而不是不允许他们访问数据库。

    在编写代码示例时可能是复制/粘贴错误,但它看起来像您的行:

    return "Basic" +btoa(username + ":" + password);
    

    在返回的字符串中Basic 和您的哈希之间缺少一个空格:

    return "Basic " +btoa(username + ":" + password);
    

    这意味着您的 Authorization 标头不正确。

    但是,您的第一个代码块似乎成功地使用了相同的功能,所以我正抓着稻草。

    【讨论】:

      【解决方案2】:

      您是否已将不带 org.couchdb.user 前缀的用户名添加到 _security 对象?

      我可以轻松理解您的代码,但没有发现明显错误。我建议您使用 Postman(Chrome 应用程序)或类似工具测试您的 API 调用,以了解问题是由客户端还是服务器端引起的。

      【讨论】:

      • 您好,非常感谢您的回复。我使用 Futon 管理面板将用户添加到 _security 文档。这有什么区别吗?我是否正确验证了它?
      • 我每次也是这样做的。只需确保添加“bob”而不是“org.couchdb.user:bob”。在 Postman 中,您还可以添加凭据 - 当调用成功时,您可以在 Angular 代码中调查问题 - 否则您必须更仔细地查看服务器端配置。
      猜你喜欢
      • 2020-04-10
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-18
      相关资源
      最近更新 更多