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 "Unauthorized" エラーが返されるため、認証は失敗します。試行中/部分的に認証しているように見えるのに、実際にはそうではないのはなぜですか?!?!

Couch 構成では…</p>

httpd セクション:

  • bind_address = 0.0.0.0
  • enable_cors = true

コアセクション:

  • 資格情報 = false
  • 起源 = *

sofa_httpd_auth セクション:

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

このデータベースのセキュリティ ダイアログは次のようになります...

ここに画像の説明を入力

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 に答える