私は、CouchDB にもっと慣れるために趣味のプロジェクトに取り組んでいます。CouchDB を使用するのはこれが初めてです。このプロジェクトの目標は、HTML、CSS、JavaScript、CouchDB、および nginx だけで Web アプリケーションを構築できるかどうかを調査することです (つまり、Couch でコードをホストしているのではなく、データのみをホストしています)。 .
これは非常に非現実的かもしれませんが、まずこのスタックのすべてのオプションを検討したいと思います。
現在、私の最大の疑問はセキュリティに関するものです。CouchDB にいくつかのデータベースがあり、それぞれがホストされたサイトに対応しているとします。この例では、単一のデータベース、つまり単一のサイトに焦点を当てます。このサイトのコンテンツの一部は、匿名ユーザーであっても、すべての人が利用できるようにする必要があります。その他のものは、特定の役割を持つユーザーのみが利用できるようにする必要があります。どのような選択肢がありますか? また、それぞれの選択肢はどの程度安全ですか?
これまでにいくつかのアイデアを思いつきましたが、これは週末に取り組む予定だったものです。
- ユーザーと役割を に追加します
/{site_db}/_security
。- Couch のドキュメントによると、
{site_db}
これを行うには、認証されたユーザーからのデータのリクエストが必要になります。
- Couch のドキュメントによると、
- という名前のユーザーを追加します。このユーザーには
anon
、役割が 1 つしかありませんanon
。 - ユーザーが最初にサイトにアクセスすると、JS モデルが現在のセッションのステータスを確認します (
GET /_session
)。- セッションが存在しない場合、JS モデルは
anon
アカウントを使用して認証します。
- セッションが存在しない場合、JS モデルは
- デザイン ドキュメントでビューを定義します。
- 非匿名ユーザーのみが使用できるビューは、
userCtx
オブジェクトのロールを確認する必要があります。 - 新しく作成されたドキュメントの検証では
userCtx
、ユーザーの役割がホワイトリストにあるかどうかを確認する必要があります。
- 非匿名ユーザーのみが使用できるビューは、
これは機能するはずですが、複雑すぎると思わずにはいられず、もっと良い方法があるに違いありません。anon
また、ユーザーが自分のユーザー ドキュメントを更新して役割を追加できないようにする方法もわかりません。