2016-11-29 81 views
0

我需要爲使用Ionic 1,PouchDB和CouchDB開發的單頁移動應用程序添加多用戶功能。在閱讀了很多文檔後,我對什麼是最佳選擇感到困惑。針對多用戶Ionic/CouchDB應用程序的建議

關於我的應用程序:

  • 它應該能夠離線工作,然後與服務器同步時在線(這是爲什麼我使用PouchDB和CouchDB的,偉大的工作,到目前爲止)

  • 它應該讓用戶使用用戶名和密碼創建一個帳戶,然後將其存儲在應用程序中,以便在他啓動應用程序時不必再次登錄。此帳戶將確保他的數據在安全的地方在服務器上同步,以便其他用戶無法訪問它。

  • 目前沒有必要讓用戶

基於我已閱讀我正在考慮以下之間共享的信息:

  • 在服務器上,有每個用戶一個數據庫,在服務器上存儲他自己的數據
  • ,具有主數據庫,存儲所有用戶的所有數據以及設計文檔。這樣可以很容易地在一個地方更改設計文檔,並將它們複製到每個用戶數據庫(然後在應用程序的PouchDB數據庫中)。主數據庫和用戶數據庫之間的數據同步通過過濾器完成,因此只有屬於一個用戶的文檔(通過某些userId字段)才被複制到此用戶的數據庫中。
  • 使用另一個模塊/插件( ?SuperLogin nolanlawson/pouchdb認證)來管理從應用程序的用戶(用戶創建,登錄,註銷,密碼重置,密碼丟失的電子郵件通知,...)

我的問題:?

  • 你認爲這個架構是否合適,還是你有更好的rec ommend?

  • 你會推薦哪些軟件用於用戶管理? SuperLogin看起來不錯,但需要在單獨的HTTP服務器上運行,這使得體系結構更加複雜。它會自動爲每個新用戶創建一個新的數據庫(我不這麼認爲)? Nolanlawson/pouchdb-authentication僅適用於客戶端,但是它與Ionic 1適合嗎? SuperLogin中沒有很多東西可以開發出來嗎?你有沒有其他的模塊?

非常感謝您的幫助!

回答

2

這是一個合適的方法。即使客戶端脫機,本地PouchDB也會在客戶端提供數據。與中央CouchDB服務器的組合非常適合在服務器和客戶端之間保持數據同步。

您想要存儲用戶憑據,因此您必須以某種方式在客戶端保存這些數據,這可以在單獨的PouchDB中完成。

如果您將所有用戶數據保留在本地PouchDB數據庫中,並且每個用戶在服務器上有一個CouchDB數據庫,則甚至可以省略您提到的過濾器,因爲只會在這兩個用戶數據庫之間進行同步。

我推薦SuperLogin。是的,你必須安裝NodeJS和一些額外的庫(即morganexpresshttpbody-parsercors),你將不得不打開你的服務器至少一個新的端口提供這項服務。但SuperLogin在管理CouchDB服務器上的用戶帳戶和用戶數據庫方面非常強大。

例如,如果一個用戶註冊,你只要做出SuperLogin呼叫通過http://server_address:port/auth/register,查詢用戶名,密碼等,並SuperLogin不僅增加了新用戶的用戶數據庫,它還會自動創建一個新的數據庫僅限該用戶。每個用戶可以有多個數據庫(私有或共享),SuperLogin管理所有這些數據庫的訪問權限。此外,SuperLogin還可以發送確認電子郵件或重新發送忘記的密碼(分別爲訪問令牌)。

當然,你將不得不配置很多(但是,嘿,至少你有所有這些選項),也許你甚至必須爲SuperLogin未涵蓋的功能編寫一些額外的API。但總的來說,SuperLogin在開發自定義用戶管理方面節省了很多痛苦。

但是,如果您不確定服務器配置,可能是Couchbase,Firebase等服務是更好的解決方案。這些服務還具有一些用戶管理功能,您不必擔心服務器安全問題。

+0

非常感謝您的反饋。事實上,我開始玩SuperLogin。我目前有/ auth/register的東西有問題,根據請求的來源(javascript vs postman)不同,它通常不起作用,有時可以工作(即在CouchDB中創建用戶)30秒後延遲,並始終以錯誤代碼回答。我必須進行調試並找到讓SuperLogin更加詳細的方法:-)。關於過濾的同步,我打算在主數據庫和每個用戶服務器數據庫之間使用它。 – bfredo123

相關問題