4

ログインしたユーザーに応じてドキュメントのコレクションをフィルタリングしようとしています。cloudant.comのユーザーから提供された認証の指示に従い、_userデータベースを作成しました。これで機能します。

今私の質問は:jquery.couchLoginのようないくつかのjsプラグインを使用して、ユーザーオブジェクトにアドホックキーを追加してコードから取得することは可能ですか?

私が作成したいものの例:

{
    "_id": "org.couchdb.user:agata",
    "_rev": "1-03a67c25da054b5f24d215f4db059d71",
    "name": "agata",
    "type": "user",
    "roles": ["admin"],
    "password_sha": "***",
    "salt": "***",
    "MYKEY1":"my val",
    "MYKEY2":"my val2"
}

次に、MYKEY1とMYKEY2を取得します。

すでに$.couchLoginで試しましたが、取得できるのは、上記のフィールド(名前、役割)の一部のみを報告するuserCtxオブジェクトだけです。couchdbコードをだましてuserCtxオブジェクトにキーを追加する必要があるようですが、実際にはそうしたくありません。

より簡単な解決策はありますか?

4

1 に答える 1

3

この質問には回答がなかったので、ここでクラウドサポートの回答を報告します。

セキュリティ上の理由から、Cloudantのパブリッククラスター上のユーザードキュメントにその情報を保存することはできません。一方、CouchDB、BigCouch、またはプライベートCloudantクラスターを実行している場合は可能です。

ただし、その情報をデータベースの1つに保存し、クライアント(ブラウザーではなくアプリサーバーであると想定)にフィルタリングとアクセス許可を実行させることができます。

だから私の戦略は今

  1. ユーザーについて必要なすべての情報を含む別のDBを作成します。
  2. 許可されたユーザーのみがこのデータベースにアクセスできるようにする
  3. (ログインを確認した後)クライアント側で必要なすべての情報を取得します。

それが機能することと、私が直面した問題を確認するために、最新情報をお知らせします。

アップデート

機能した!したがって、戦略は基本的に2つのデータベースを作成することです。

  1. cloudantに固有の名前、shaパスワードなどを持つ1つ(_users)
  2. もう1つ(your_users_DB)は、実行する必要のあるさまざまなアクションに必要なユーザー名とその他のキーだけを備えています。

したがって、私が行ったことは、次のように構造化されたドキュメントを使用してこの2番目のデータベースを作成することでした。

{"_id":"org.couchdb.user:USERONE",
"name":"USERONE",
"type":"user",
"roles":["user"],
"filters":{"FILTER1":"VAL1","FLTER2":"VAL2"}}

次に、ユーザー(たとえば、USERONE)が正常にログインすると、このドキュメントも取得され、「filters」フィールドを使用してコレクションがフィルタリングされます。

一種の回避策ですが、堅牢に機能します

于 2012-05-07T09:39:13.483 に答える