0

Ionic 1、PouchDB、CouchDBで開発されたシングルページのモバイルアプリケーションにマルチユーザー機能を追加する必要があります。多くのドキュメントを読んだ後、私は最良の選択となるものを混乱させています。私のアプリについてマルチユーザー向けの推奨Ionic/CouchDBアプリケーション

  • オフラインで作業し、サーバーと同期することができるはずオンライン時(これは、なぜ私が素晴らしい、これまで働いて、PouchDBとCouchDBのを使用しています)

  • ユーザーは、ユーザー名とパスワードを持つアカウントを作成して、アプリを起動するたびに再度ログインする必要がないように、アプリ内に保存する必要があります。このアカウントは、他のユーザーがアクセスできないように、サーバー上のデータが安全な場所に同期されるようにします。

  • 現在、私は次のことを検討しています読んだことが何に基づいてユーザー

間で共有する情報持ってする必要はありません:サーバー上

  • は、ユーザーごとに1つのデータベースを持っています自分自身のデータをサーバーに保存し、すべてのユーザーのすべてのデータとデザイン文書を格納するマスターデータベースを持ちます。これにより、デザインドキュメントを一箇所で簡単に変更し、各ユーザデータベース(そして、アプリケーション内のPouchDBデータベース内)にレプリケートさせることができます。 1人のユーザーに属するドキュメント(一部のuserIdフィールド)のみがこのユーザーのデータベースに複製されるように、フィルタを使用してデータの同期が行われます。
  • 他のモジュール/プラグインを使用するSuperLogin nolanlawson/pouchdb認証)アプリ(ユーザーの作成、ログイン、ログアウト、パスワードのリセット、失われたパスワードのための電子メール通知からユーザーを管理するために、...)

私の質問:??

  • このアーキテクチャは適切だと思いますか、ほら?

  • どのソフトウェアをユーザー管理にお勧めしますか? SuperLoginは素晴らしいですが、別のHTTPサーバー上で実行する必要があり、アーキテクチャが複雑になります。それは新しいユーザーごとに自動的に新しいデータベースを作成しますか(そうは思いませんか?) Nolanlawson/pouchdb-authenticationはクライアント専用ですが、Ionic 1とうまく適合していますか? SuperLoginの箱から出てくるものがたくさんありますか?あなたは他のどのモジュールも念頭に置いていますか?

ご協力いただきありがとうございます。

答えて

2

これは適切な方法です。ローカルのPouchDBは、クライアントがオフラインになってもクライアント側のデータを提供します。中央のCouchDBサーバーとの組み合わせは、サーバーとクライアント間でデータを同期させるのに最適です。

ユーザーの資格情報を保存したいので、このデータを何らかの方法でクライアント側に保存する必要があります。これは別のPouchDBで行うことができます。

すべてのユーザデータをローカルのPouchDBデータベースに保存し、サーバ上のユーザごとに1つのCouchDBデータベースがある場合、同期はこの2つのユーザデータベース間でのみ行われるため、前述のフィルタを省略することもできます。

私はSuperLoginをお勧めします。はい、NodeJSと追加のライブラリ(つまりmorganexpresshttpbody-parserおよびcors)をインストールする必要があります。このサービスを提供するには、少なくとも1つの新しいポートにサーバーを開く必要があります。しかし、SuperLoginは、CouchDBサーバー上のユーザーアカウントとユーザーデータベースを管理するのに本当に強力です。

たとえば、ユーザー登録する場合は、あなただけの、http://server_address:port/auth/register経由SuperLoginへの呼び出しを行い、ユーザー名、パスワードなどを照会しSuperLoginは、ユーザデータベースに新しいユーザーを追加するだけでなく、それはまた、自動的に新しいデータベースを作成しますこのユーザーのみ各ユーザは複数のデータベース(プライベートまたは共有)を持つことができ、SuperLoginはこれらすべてのデータベースへのアクセス権を管理します。さらに、SuperLoginは確認メールを送信したり、忘れたパスワード(それぞれアクセストークン)を再送信することもできます。

確かに、あなたは多くのことを設定する必要があります(しかし、ちょっと、少なくともあなたはすべてのこれらのオプションを持っている)、そして多分あなたもSuperLoginでカバーされていない機能のためにいくつかの追加のAPIを記述する必要があります。しかし、一般に、SuperLoginは、カスタムユーザー管理の開発に関する多くの苦労を軽減します。

しかし、サーバの設定が不明な場合は、おそらくCouchbase、Firebaseなどのサービスが適しています。これらのサービスにはユーザー管理機能もあり、サーバーのセキュリティを犠牲にする必要はありません。

+0

フィードバックに感謝します。本当に私はSuperLoginで遊んでいました。私は現在、時々作品30secs後(つまり、CouchDBの中でユーザーが作成されます)、同じ要求が(郵便配達対ジャバスクリプト)から来ている場所に応じて、それが最も頻繁に動作しない動作しない/認証/登録の事で問題を抱えています遅延し、常にエラーコードで応答します。私はこれをデバッグして、SuperLoginに問題をもっと冗長にする方法を見つけなければなりません:-)。フィルターの同期については、私は、マスターデータベースとユーザごとのサーバデータベースのそれぞれの間にそれを使用することを意図されました。 – bfredo123

関連する問題