2016-11-29 36 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

相关问题