5

couchdb 1.2でパスワードを変更できるかどうか誰かが知っていますか?ユーザーを作成するために、ユーザーの情報を取得して、次のように_usersデータベースに投稿するフォームがあります(以下のURLの「users」がプロキシされます)。

// Create a user
var userObj = {
     _id: "org.couchdb.user:test",
     type: "user",
     name: "test",
     roles: ["user"],
     emailAddress: "test@testy.com",
     firstName: "Test",
     lastName: "Test",
     password: "password"
};
$.ajax({
    url: "/users/org.couchdb.user:test",
    type: "PUT",
    dataType: "json",
    contentType:"application/json",
    data: JSON.stringify(userObj)
});

Couchdb 1.2は、パスワードハッシュとソルトを生成し、ユーザーを保存します。それは素晴らしい働きをします。パスワードを更新するには、ユーザーを取得し、password_shaフィールドとsaltフィールドを削除し、パスワードフィールドを追加してから、ドキュメントを再投稿してみました。Couchがpassword_shaフィールドとsaltフィールドを再計算してドキュメントを更新することを期待していましたが、そうではありません。password_shaフィールドとsaltフィールドは更新されません。

// Update a user
$.get("/users/org.couchdb.user:test")
.done(function(userDoc){
  delete userDoc.password_sha;
  delete userDoc.salt
  userDoc.password = "test";
  $.ajax({
    url: "/users/org.couchdb.user:test",
    type: "PUT",
    dataType: "json",
    contentType:"application/json",
    data: userDoc
  });
});

couchは、ドキュメントの作成時にpassword_shaフィールドとsaltフィールドのみを生成するのではないかと思います。その場合は、独自のpassword_shaフィールドとsaltフィールドを生成し、代わりに更新されたドキュメントに投稿する必要がありますか?ここで何かが足りませんか?

ありがとう!

4

1 に答える 1

2

どうでも。JSON文字列を更新しようとしていました...おお!userDoc を解析し、パスワードを追加してから再送信するだけです。

于 2012-05-21T20:43:31.177 に答える