CouchDB _session身份验证失败

时间:2013-09-11 19:55:29

标签: authentication couchdb

我的应用是AngularJS。在我的服务中,我有几个登录功能......

    login: function(tag,pass) {
        return $http.post(this.databaseUrl + "_session/", {"name":tag,"password":pass});
    },

    loginGet: function() {
        return $http.get(this.databaseUrl + "_session");
    },

在我的控制器里,我有......

    $scope.init = function() {
        dataFactory.login("mark","myPassword")
        .then(function (response) {
            console.log('dataFactory.login.post response...');
            console.log(response);
            dataFactory.loginGet()
            .then(function (response) {
                console.log("dataFactory.loginGet response...");
                console.log(response);
            });
        });
    };

以下是我在控制台中看到的内容......

enter image description here

请注意,帖子后返回的角色是正确的。它们是“mark”的角色,但请注意返回的json中的空白名称。以下对_session的调用返回Ok,但同样名称为空。所有后续访问数据库都返回401“未授权”错误,因此身份验证失败。为什么它似乎尝试/部分验证但不是真的?!?!

在Couch配置中我有......

httpd部分:

  • bind_address = 0.0.0.0
  • enable_cors = true

cors部分:

  • credentials = false
  • originins = *

couch_httpd_auth部分:

  • allow_persistent_cookies = true
  • authentication_db = _users
  • require_valid_user = false;

此数据库的安全对话框看起来像......

enter image description here

我能解决401错误的唯一方法是清除此对话框中的“成员名称/角色”框。这完全没有解决方案。

你能看出我做错了什么吗?

非常感谢你的帮助。几天来我一直在尝试和失败: - /

1 个答案:

答案 0 :(得分:3)

再次回答我自己的问题。因此,对于未来的CouchDB身份验证搜索者,以下身份验证方法在我的AngularJS应用程序中正常运行...

    authenticate: function(user,pass) {
        return $http({
            method: "POST",
            url: this.databaseUrl + "_session",
            headers: {"Content-Type": "application/x-www-form-urlencoded"},
            data: "name=" + user + "&password=" + pass
        });
    },