4

Couchapp を介してアプリケーションをデプロイしました。つまり、アプリケーション全体がデータベースから提供されます。Couchdb データベース内のデータを一般公開したくないので、ユーザーにデータを提供する前にユーザーが持つ必要があるリーダー ロールを指定しました。ただし、アプリケーションにアクセスすると、取得できるのは次のとおりです。

{"error":"unauthorized","reason":"You are not authorized to access this db."}

jquery.couch.js を使用するログイン ページを提供することさえできないからです。

アプリ内ログインを提供する方法に関するアイデアはありますか (つまり、データ読み取りアクセスが必要なユーザーに Futon を使用せずにログインします)?

4

2 に答える 2

5

現時点では、ソリューションには少し作業が必要です。(コミュニティにはこれを改善する圧力がありますが、提案やベーパーウェアについて説明する代わりに、現在の回答について説明します。)

次の機能を備えた「ウェルカム マット」データベースを作成します。

  • 管理者ユーザー (「jtsnake」) を持っています。_security.admins = {"names":["jtsnake"], "roles":[]}
  • 一般公開:_security.readers = {"names":[], "roles":[]}}
  • 機能を備えた設計書を持ってい.validate_doc_updateます。管理者以外は変更できません:

    function(newDoc, oldDoc, userCtx, secObj) {
        // _design/welcome_mat .validate_doc_update
    
        if(! userCtx.name)
          throw {"unauthorized": "Please log in to change the welcome mat"};
        if(userCtx.roles.indexOf("_admin") === -1)
          throw {"forbidden": "Only the admin can change the welcome mat"};
        log("Allowing welcome mat update by: " + userCtx.name);
    }
    
  • 最後に、ウェルカム画面やログイン画面などのパブリックコンテンツをこのデータベースに配置します。ユーザーがログインすると、プライベート データはプライベート データベースに移動できます。

于 2011-09-13T01:58:29.617 に答える