我有一个名为“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 的成员添加)来获取“留言板”数据库中的所有文档。 请参阅以下代码:
$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文档中。
任何人都可以提供帮助。我做错了什么。
答案 0 :(得分:0)
您是否已将org.couchdb.user前缀的用户名添加到_security对象?
我可以轻松理解您的代码,但没有看到明显的错误。我建议您使用Postman(Chrome应用程序)或类似方法测试您的API调用,以了解问题是由客户端还是服务器端引起的。
答案 1 :(得分:0)
401表示Couch无法登录您的用户,而不是允许他们访问数据库。
在编写代码示例时可能会出现复制/粘贴错误,但它看起来像是你的行:
return "Basic" +btoa(username + ":" + password);
在Basic
和返回字符串中的哈希之间缺少空格:
return "Basic " +btoa(username + ":" + password);
这意味着您的Authorization
标题不正确。
但是,您的第一个代码块似乎成功使用了相同的功能,因此我抓住了吸管。