2

私は最近 CouchDB に興味を持ち、それを中心に小さなアプリケーションを作成したいと考えました。

私が現在システムに招待する方法は、ID、API キー、およびフォーマットの 2 つを提供するリクエストが来るというものです。ID はデータベース内のドキュメントの _id であり、API キーは {"valid" : true/false} のプロパティを持つ別のドキュメントの _id であり、形式は必要な形式です。API キーが有効な場合、システムは指定された ID の表示ページを要求された形式で生成します。それ以外の場合は、403 統計コードが返されます。

残念ながら、ショー ページから別のドキュメントを表示する方法が見つかりません。私はCouchDBを始めたばかりなので、ここに欠けている簡単なものがあるかもしれません。

4

1 に答える 1

4

_show関数には、次の 3 つの部分が関係します。

  1. 設計書
  2. 設計ドキュメント内の show 関数
  3. 表示される追加ドキュメント

URL 形式の場合/db/_design/ddoc/_show/my_show_func/otherdoc:

  1. 設計書は、_design/ddoc
  2. show 関数はshows.my_show_funcその設計ドキュメント内にあります
  3. 表示するドキュメントに_idotherdoc

これらは、関連する2 つのドキュメントのみです。あなたが説明したことを行うと私が考えることができる唯一の方法は、API キーごとに設計ドキュメントを作成することです。ユーザーはクエリを実行します/db/_design/API_KEY/_show/other_doc_id。CouchDB はリラックスしています。同一または類似の機能を持つ何千もの設計ドキュメントに問題はありません_show。必要に応じて、HTTPCOPYメソッドを使用して基本設計ドキュメントを新しい API キーに複製できます。次に、設計ドキュメントを削除して API キーを取り消すことができます。ただし、これは明らかにユニークなアプローチであり、再考する価値があります。

最終的な考慮事項は (デフォルトの CouchDB、リバース プロキシなし、mod_security など)、ユーザーが 1 つのドキュメントを読み取ることができる場合、データベース全体を (たとえば、_all_docsクエリから) 読み取ることができるということです。したがって、show 関数はソフトウェアにとって便利ですが、セキュリティゲートウェイではありません。

于 2010-08-31T19:51:50.740 に答える