我需要为使用Ionic 1,PouchDB和CouchDB开发的单页移动应用添加多用户功能。在阅读了很多文档后,我对最佳选择感到困惑。
关于我的应用:
它应该能够脱机工作,然后在线时与服务器同步(这就是为什么我使用PouchDB和CouchDB,到目前为止工作得很好)
它应该让用户使用用户名和密码创建一个帐户,然后将其存储在应用程序中,这样他无需在启动应用程序时再次登录。此帐户将确保他的数据然后在安全的地方在服务器上同步,以便其他用户无法访问它。
目前无需在用户之间共享信息
根据我所读到的内容,我正在考虑以下内容:
userId
字段)才会复制到该用户的数据库中我的问题:
您认为这种架构是否合适,或者您是否有更好的建议?
您会为用户管理推荐哪种软件? SuperLogin看起来很棒,但需要在单独的HTTP服务器上运行,这使得架构更加复杂。它是否为每个新用户自动创建一个新数据库(我不这么认为)? Nolanlawson / pouchdb-authentication仅限客户端,但它是否适合Ionic 1?是不是有很多东西需要开发,它与SuperLogin开箱即用?你还有其他模块吗?
非常感谢您的帮助!
答案 0 :(得分:2)
这是一种合适的方法。即使客户端脱机,本地PouchDB也将在客户端提供数据。与中央CouchDB服务器的组合非常适合在服务器和客户端之间保持数据同步。
您希望存储用户凭据,因此您必须以某种方式在客户端保存此数据,这可以在单独的PouchDB中完成。
如果您将所有用户数据保存在本地PouchDB数据库中并且每个用户在服务器上有一个CouchDB数据库,您甚至可以省略您提到的过滤器,因为同步只会在这两个用户数据库之间进行。
我推荐SuperLogin。是的,您必须安装NodeJS
和一些额外的库(即morgan
,express
,http
,body-parser
和cors
),然后您将必须打开您的服务器至少一个新端口来提供此服务。但SuperLogin在CouchDB服务器上管理用户帐户和用户数据库非常强大。
例如,如果用户注册,您只需通过http://server_address:port/auth/register
调用SuperLogin,查询用户名,密码等,SuperLogin不仅会将此新用户添加到用户数据库,还会自动创建仅适用于此用户的新数据库。每个用户可以拥有多个数据库(私有或共享),SuperLogin管理所有这些数据库的访问权限。此外,SuperLogin还可以发送确认电子邮件或重新发送忘记的密码(分别是访问令牌)。
当然,你必须配置很多(但是,嘿,至少你有所有这些选项),也许你甚至不得不为SuperLogin未涵盖的功能编写一些额外的API。但总的来说,SuperLogin在开发自定义用户管理方面节省了很多痛苦。
但如果您不确定服务器配置,可能Couchbase,Firebase等服务是更好的解决方案。这些服务还具有一些用户管理功能,您不得不为服务器安全性而烦恼。