1

我的应用是 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);
            });
        });
    };

这是我在控制台中看到的...

在此处输入图像描述

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

在沙发配置中,我有……</p>

httpd部分:

  • 绑定地址 = 0.0.0.0
  • enable_cors = 真

cors部分:

  • 凭据 = 假
  • 起源 = *

couch_httpd_auth 部分:

  • allow_persistent_cookies = true
  • authentication_db = _users
  • 要求有效用户=假;

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

在此处输入图像描述

我可以绕过 401 错误的唯一方法是清除此对话框上的成员名称/角色框。这根本不是解决方案。

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

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

4

1 回答 1

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
        });
    },
于 2013-09-18T12:48:05.933 回答